无法将表单字段中的数据填充到struts2中的操作类数据成员中

时间:2013-08-29 14:58:15

标签: struts2

我创建了一个jsp页面,其中有一个表单,我试图从这个表单填充操作类的数据成员,在提交表单之后控件被移动到action类但是没有填充action类数据成员

我的jsp页面看起来像这样。

 <s:actionerror /> 
 <s:form  action = "retrieve"  method="post">
        <s:textfield  name = "form1" value = "form1" />
         <s:textfield  name="cid"/>
         <s:submit type = "submit" name = "sub" value="submit"/>          
 </s:form>

我的动作类看起来像这样。

     public class CustomerUpdate extends ActionSupport {

     private String form1 ;

     private String cid ;


         public String execute() {

                  System.out.println(form1) ;
                  System.out.println(cid) ;

    }

在提交表单后,我希望action类中的form1变量的值应为“form1”,但它仍为null。

任何人都可以帮助我在哪里出错?

提前致谢.....

2 个答案:

答案 0 :(得分:0)

我不确定您是否有将动作类映射到jsp文件的配置文件。 通常配置文件是src文件夹中的xml文件。例如:

<struts>
    <package name="default" extends="struts-default">
        <action name="retrieve" class="CustomerUpdate">
            <result>/xxx.jsp</result>
        </action>

    </package>  
</struts>

由于您的execute方法是返回类型字符串,因此返回一些字符串。根据从execute方法返回的字符串,您可以重定向。否则将其改为无效。

如果您已经使用jsp正确配置了动作类,那么对于使用成员变量,jsp中的代码可能如下所示:

<form  action = "retrieve"  method="post">
        <s:textfield  name = "form1" value = "${form1}" />
         <s:textfield  name="${cid}"/>
         <s:submit type = "submit" name = "sub" value="submit"/>          
 </form>

并且因为成员变量是私有的:

system.out.println(getForm1);
system.out.println(getCid);

希望有所帮助

答案 1 :(得分:0)

首先,您的代码将无法编译。

我认为 struts.xml 文件包含以下行,

<action name="retrieve" class="CustomerUpdate" method="execute">
            <result name="success">/success.jsp</result>
</action>

更新 CustomerUpdate ,如下所示,然后查看该计划。

public class CustomerUpdate extends ActionSupport {

     private String form1 ;

     private String cid ;


         public String execute() {

                  System.out.println(form1) ;
                  System.out.println(cid) ;


        return "success";

    }

    //getter & setter for form1 & cid 
}

请尝试上面的代码示例,我认为它会起作用。