代码之家  ›  专栏  ›  技术社区  ›  BlueDolphin

Struts1.xActionForm如何处理纯HTML复选框列表?

  •  1
  • BlueDolphin  · 技术社区  · 14 年前

    我正在处理一个使用Struts1.2的旧应用程序。出于某种原因,我们使用纯html表单提交到struts操作。例如:

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

    项目1 项目2

    然后我将表单bean testform与testaction相关联。

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

    我试着加上 getMyitem1(),setMyitem1(string[]项),getSelectedMyitem1(),setSelectedMyitem1(string[]项)

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

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

    请告知,谢谢。

    1 回复  |  直到 14 年前
        1
  •  6
  •   user159088    14 年前

    首先,让我们澄清一下struts如何管理表单提交:

    • 使用html表单向操作提交一些值(在本例中,操作是struts操作,通常是*.do);
    • struts因为actionServlet(在web.xml中指定)而接收请求;
    • 根据您在struts-config.xml文件中指定的信息,选择一个特定的操作类(与您的请求匹配的操作类);
    • 基于已标识的操作,将获得一个操作表单(同样基于您在struts config.xml中指定的信息);
    • 创建或回收此ActionForm的实例(基于表单的范围:请求与会话);
    • 来自请求的数据绑定到表单属性 ;
    • 使用此窗体对象调用Action Execute(…)方法。

    现在,绑定是基于名称完成的; 与表单中属性名称匹配的请求参数的名称 . 请求参数的名称是off-course您提交的html表单中输入字段的名称。

    例如,如果您提交一个名为 test ,您的action form类中应该有以下访问器(它们尊重javabeans对名为 测试 ):

    public void setTest(String val) { ... }
    public String getTest() { ... }
    

    如果您有附加到 测试 参数(我假设是您的情况,因为您提到了一个复选框列表)访问器将更改为数组类型:

    public void setTest(String[] val) { ... }
    public String[] getTest() { ... }
    

    但又一次 名称用于匹配 ,总是名字。

    不确定要对项1项2执行什么操作。这些是为您的输入提交的值吗(相当于 测试 )?