多个Form元素指向Spring中的单个路径

时间:2012-11-21 17:14:46

标签: forms spring

我做了一些搜索,似乎没有问过这个具体问题(如果我弄错了,我道歉)。

我正在处理的应用程序处理一组数据的报告,报告按客户端和报告类别分开。

我遇到的问题是每个作业的客户端和类别数量各不相同,因此我需要根据每个作业的要求动态生成以下表单元素。

<!-- 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(从上到下基本上在页面中工作)。总是这样吗?

1 个答案:

答案 0 :(得分:1)

是的,订单将始终是表单中表单字段的定义顺序。

在使用相同路径定义多个字段时,您还可以在请求方法中将它们绑定为数组,如:

@Controller
public class YourController {
    @RequestMapping(....)
    public String foo(@RequestParam String clientName[], @RequestParam String reportingCategories[], BindingResult result) {
        ...
    }
}