Checkbox struts 1.X ActionForm如何处理纯html复选框列表?
我正在处理一个使用struts 1.2的旧应用程序。出于某种原因,我们使用纯html表单来提交struts操作。例如: 对于testAction.do的内容输出,我尝试提交给它自己 项目1 项目2 然后我将一个表单bean TestForm与testAction相关联 我不确定如何在表单中指定属性,以便在用户单击“提交”后从myitem1获取值 我试图补充 getMyitem1、SetMyItem1字符串[]项、getSelectedMyitem1、SetSelectedMyItem1字符串[]项 这些set方法仅在加载页面时调用 我想我对Struts1.x中ActionForm的理解一定是错误的Checkbox struts 1.X ActionForm如何处理纯html复选框列表?,checkbox,struts,actionform,Checkbox,Struts,Actionform,我正在处理一个使用struts 1.2的旧应用程序。出于某种原因,我们使用纯html表单来提交struts操作。例如: 对于testAction.do的内容输出,我尝试提交给它自己 项目1 项目2 然后我将一个表单bean TestForm与testAction相关联 我不确定如何在表单中指定属性,以便在用户单击“提交”后从myitem1获取值 我试图补充 getMyitem1、SetMyItem1字符串[]项、getSelectedMyitem1、SetSelectedMyItem1字符串[]
请告知,谢谢 首先,让我们澄清一下Struts是如何管理表单提交的: 您使用HTML表单向一个操作提交一些值,在本例中,该操作是Struts操作,通常为*.do; Struts接收请求是因为web.xml中指定了ActionServlet; 根据您在struts-config.xml文件中指定的信息,将选择一个特定的操作类,即与您的请求匹配的操作类; 根据已识别的操作,将根据struts-config.xml中指定的信息再次获取操作表单; 此ActionForm的实例根据表单的范围创建或回收:请求vs会话; 来自请求的数据绑定到表单属性; 你的行动执行。。。方法与此窗体对象一起调用。 现在,根据名称进行绑定;与表单中属性名称匹配的请求参数的名称。请求参数的名称是您提交的HTML表单中输入字段的名称 例如,如果您提交了一个名为test的输入,那么您的action form类中应该有以下访问器,这些访问器尊重JavaBeans对名为test的属性的约定: 如果您有一个附加到测试参数的值列表,我假设这是您的情况,因为您提到了一个复选框列表,那么访问器将更改为数组类型:
public void setTest(String[] val) { ... }
public String[] getTest() { ... }
但名称同样用于匹配,始终是名称
不确定您试图对项目1和项目2执行什么操作。这些是为测试提交的输入值吗?首先,让我们澄清一下Struts是如何管理表单提交的: 您使用HTML表单向一个操作提交一些值,在本例中,该操作是Struts操作,通常为*.do; Struts接收请求是因为web.xml中指定了ActionServlet; 根据您在struts-config.xml文件中指定的信息,将选择一个特定的操作类,即与您的请求匹配的操作类; 根据已识别的操作,将根据struts-config.xml中指定的信息再次获取操作表单; 此ActionForm的实例根据表单的范围创建或回收:请求vs会话; 来自请求的数据绑定到表单属性; 你的行动执行。。。方法与此窗体对象一起调用。 现在,根据名称进行绑定;与表单中属性名称匹配的请求参数的名称。请求参数的名称是您提交的HTML表单中输入字段的名称 例如,如果您提交了一个名为test的输入,那么您的action form类中应该有以下访问器,这些访问器尊重JavaBeans对名为test的属性的约定: 如果您有一个附加到测试参数的值列表,我假设这是您的情况,因为您提到了一个复选框列表,那么访问器将更改为数组类型:
public void setTest(String[] val) { ... }
public String[] getTest() { ... }
但名称同样用于匹配,始终是名称
不确定您试图对项目1和项目2执行什么操作。这些是为您的输入提交的与测试等效的值吗?这一步也是我的假设,但在提交时,似乎调用了下一个表单中的setTest。它仅在页面加载时调用…您确定值以正确的名称发送吗?您能在服务器上截获请求或调试并查看提交的内容吗?可能会有什么干扰,javascript吗?刚刚发现问题,变量大小写是错误的。谢谢你的帮助。这一步也是我的设想,但似乎在提交时,下一个表单中的setTest被调用了。它仅在页面加载时调用…您确定值以正确的名称发送吗?您能在服务器上截获请求或调试并查看提交的内容吗?可能会有什么干扰,javascript吗?刚刚发现问题,变量大小写是错误的。谢谢你的帮助。