2

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

我的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”,但它仍然为空。

谁能帮助我哪里出错了?

提前致谢.....

4

2 回答 2

0

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

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

    </package>  
</struts>

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

如果您已经为您的 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);

希望有帮助

于 2013-08-29T17:45:24.977 回答
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 
}

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

于 2016-02-04T05:21:41.553 回答