我做了一些搜索,似乎没有问过这个具体问题(如果我弄错了,我道歉)。
我正在处理的应用程序处理一组数据的报告,报告按客户端和报告类别分开。
我遇到的问题是每个作业的客户端和类别数量各不相同,因此我需要根据每个作业的要求动态生成以下表单元素。
<!-- CLIENT NAME -->
Inclusion Client Name:
<form:errors path="clientName" cssClass="error"/><br />
<form:input path="clientName" />
<br /><br />
<!-- REPORTING CCATEGORIES -->
Reporting Categories:
<form:errors path="reportingCategories" cssClass="error"/><br />
<form:input path="reportingCategories" />
<br /><br />
<!-- comma separated list of categories -->
在测试一些理论的过程中,我了解到你可以将多个表单元素指向同一个路径,Spring会将这些值连接成一个以逗号分隔的列表。我唯一关心的是读取这些表单元素的顺序。
<!-- CLIENT NAME A -->
Inclusion Client Name:
<form:errors path="clientName" cssClass="error"/><br />
<form:input path="clientName" />
<br /><br />
<!-- REPORTING CATEGORIES A -->
Reporting Categories:
<form:errors path="reportingCategories" cssClass="error"/><br />
<form:input path="reportingCategories" />
<br /><br />
<!-- comma separated list of categories -->
<!-- CLIENT NAME B -->
Inclusion Client Name:
<form:errors path="clientName" cssClass="error"/><br />
<form:input path="clientName" />
<br /><br />
<!-- REPORTING CATEGORIES B -->
Reporting Categories:
<form:errors path="reportingCategories" cssClass="error"/><br />
<form:input path="reportingCategories" />
<br /><br />
<!-- comma separated list of categories -->
在上面的第二个代码片段中,我的测试用例在客户端名称B之前读取客户端名称A(从上到下基本上在页面中工作)。总是这样吗?
答案 0 :(得分:1)
是的,订单将始终是表单中表单字段的定义顺序。
在使用相同路径定义多个字段时,您还可以在请求方法中将它们绑定为数组,如:
@Controller
public class YourController {
@RequestMapping(....)
public String foo(@RequestParam String clientName[], @RequestParam String reportingCategories[], BindingResult result) {
...
}
}