我有一个带有输入框的模板,每一行代表一个模型对象。我不知道在我的控制器中映射它的最好方法是什么。
#{form id:'targetsForm', method:'POST', action:@createTargets()}
<table id="targetsTable">
<tr>
<th>Name</th>
<th>January</th>
<th>February</th>
<th>March</th>
</tr>
<tbody>
<tr>
<td class="center" id="object2">Object1</td>
<td class="center"><input id="01-jan" type="number" name="01-jan" size="20" value="" class="target-input" /></td>
<td class="center"><input id="01-feb" type="number" name="01-feb" size="20" value="" class="target-input" /></td>
<td class="center"><input id="01-mar" type="number" name="01-mar" size="20" value="" class="target-input" /></td>
</tr>
<tr>
<td class="center" id="object2">Object2</td>
<td class="center"><input id="02-jan" type="number" name="02-jan" size="20" value="" class="target-input" /></td>
<td class="center"><input id="02-feb" type="number" name="02-feb" size="20" value="" class="target-input" /></td>
<td class="center"><input id="02-mar" type="number" name="02-mar" size="20" value="" class="target-input" /></td>
</tr>
</tbody>
</table>
#{/form}我如何在路由和控制器中映射对象1和对象2,知道表单中可能有n个对象?
发布于 2012-01-22 16:18:52
在您的模板中,您可以这样做:
#{form @createTargets()}
#{field 'january[0]'}
<input type="number" name="${field.name}" value=""/>
#{/field}
#{field 'february[0]'}
<input type="number" name="${field.name}" value=""/>
#{/field}
#{field 'march[0]'}
<input type="number" name="${field.name}" value=""/>
#{/field}
#{field 'january[1]'}
<input type="number" name="${field.name}" value=""/>
#{/field}
#{field 'february[1]'}
<input type="number" name="${field.name}" value=""/>
#{/field}
#{field 'march[1]'}
<input type="number" name="${field.name}" value=""/>
#{/field}
#{/form}然后在您的控制器中,您的createTargets方法将如下所示:
public static void save(List<Integer> january, List<Integer> february, List<Integer> march) { ... }您不需要做任何特殊的事情来将模板中的字段映射到控制器。Play会将名称(例如,一月、二月、三月)映射到控制器中的参数名称。
您可以像这样创建一个对象,而不是将单个月份作为操作方法的参数:
public class Target {
private int january;
private int february;
private int march;
...
}然后,模板将如下所示:
#{form @createTargets()}
#{field 'targets[0].january'}
<input type="number" name="${field.name}" value=""/>
#{/field}
#{field 'targets[0].february'}
<input type="number" name="${field.name}" value=""/>
#{/field}
#{field 'targets[0].march'}
<input type="number" name="${field.name}" value=""/>
#{/field}
#{field 'targets[1].january'}
<input type="number" name="${field.name}" value=""/>
#{/field}
#{field 'targets[1].february'}
<input type="number" name="${field.name}" value=""/>
#{/field}
#{field 'targets[1].march'}
<input type="number" name="${field.name}" value=""/>
#{/field}
#{/form}那么控制器将会是这样的:
public static void save(List<Target> targets) { ... }https://stackoverflow.com/questions/8959277
复制相似问题