Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Checkbox struts 1.X ActionForm如何处理纯html复选框列表?_Checkbox_Struts_Actionform - Fatal编程技术网

Checkbox struts 1.X ActionForm如何处理纯html复选框列表?

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 1.2的旧应用程序。出于某种原因,我们使用纯html表单来提交struts操作。例如:

对于testAction.do的内容输出,我尝试提交给它自己

项目1 项目2 然后我将一个表单bean TestForm与testAction相关联

我不确定如何在表单中指定属性,以便在用户单击“提交”后从myitem1获取值

我试图补充 getMyitem1、SetMyItem1字符串[]项、getSelectedMyitem1、SetSelectedMyItem1字符串[]项

这些set方法仅在加载页面时调用

我想我对Struts1.x中ActionForm的理解一定是错误的


请告知,谢谢

首先,让我们澄清一下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吗?刚刚发现问题,变量大小写是错误的。谢谢你的帮助。