2

我做了一些搜索,似乎没有提出这个特定的问题(如果我弄错了,我道歉)。

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

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

<!-- 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 -->

在上面的第二个代码片段中,我的测试用例在 CLIENT NAME B 之前读取了 CLIENT NAME A(基本上是从上到下向下处理页面)。会一直这样吗?

4

1 回答 1

1

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

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

@Controller
public class YourController {
    @RequestMapping(....)
    public String foo(@RequestParam String clientName[], @RequestParam String reportingCategories[], BindingResult result) {
        ...
    }
}
于 2012-11-21T17:43:13.823 回答