gpt4 book ai didi

java - 如何将多个对象从模板映射到 Controller

转载 作者:行者123 更新时间:2023-12-02 00:31:31 25 4
gpt4 key购买 nike

我有一个带有输入框表格的模板,每行代表一个模型对象。我不知道在我的 Controller 中映射它的最佳方法是什么。

  #{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}

如何在路由和 Controller 中映射对象 1 和对象 2,知道表单中可能有 n 个对象?

最佳答案

在您的模板中,您可以执行以下操作:

#{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}

然后在您的 Controller 中,您的 createTargets 方法将如下所示:

public static void save(List<Integer> january, List<Integer> february, List<Integer> march) { ... }

您不需要执行任何特殊操作即可将字段从模板映射到 Controller 。 Play 会将名称(即一月、二月、三月)映射到 Controller 中的参数名称。

您可以创建一个如下所示的对象,而不是将各个月份作为操作方法的参数:

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}

那么 Controller 将是这样的:

public static void save(List<Target> targets) { ... }

关于java - 如何将多个对象从模板映射到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8959277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com