首先,让我们澄清一下 Struts 是如何管理表单提交的:
- 您使用 HTML 表单向一个动作提交一些值(在这种情况下,该动作是一个 Struts 动作,通常是 *.do);
- Struts 接收请求是因为 ActionServlet(在 web.xml 中指定);
- 根据您在 struts-config.xml 文件中指定的信息,选择特定的 Action 类(与您的请求匹配的);
- 基于已识别的 Action 获得一个动作表单(同样基于您在 struts-config.xml 中指定的信息);
- 创建或回收此 ActionForm 的一个实例(基于表单的范围:请求与会话);
- 请求中的数据绑定到表单属性;
- 使用此表单对象调用您的操作 execute(...) 方法。
现在,绑定是基于名称完成的;请求参数的名称与表单中的属性名称匹配。请求参数的名称当然是您提交的 HTML 表单中输入字段的名称。
例如,如果您使用 name 提交输入test
,您的操作表单类中应该有以下访问器(遵守 JavaBeans 对属性 named 的约定test
):
public void setTest(String val) { ... }
public String getTest() { ... }
如果您有一个附加到test
参数的值列表(我认为这是您的情况,因为您提到了复选框列表),则访问器将更改为数组类型:
public void setTest(String[] val) { ... }
public String[] getTest() { ... }
但是名称再次用于匹配,始终是名称。
不确定您要对第 1 项第 2 项做什么。这些是为您的输入提交的值(相当于test
)吗?