日期:2014-05-17  浏览次数:20864 次

初学java web 开发 关于struts2的小困惑
本人才初学java web 开发 最近接触到struts2,教程上有个例子,很简单就是单纯的传递一个表单内控件的内容到Action判断一下显示出来,代码如下:

index.jsp:
 
<body>
    <form id="form1" name="form1" method="post" action="<%=path%>/check">
  <label>姓名
  <input type="text" name="name" id="name"/>
  </label>
  <p>
    <label>密码
    <input type="text" name="pswd" id="pswd" />
    </label>
  </p>
  <p>
    <label> 
    <input type="submit" name="sub" value="提交" />
    </label>
    <input type="reset" name="reset" value="重置" />
  </p>
</form>
  </body>
--------------------------------------------------------------------------------------------------------------------------------------------------------------
UserAction.java:

public class UserAction implements Action {
    private String strname;
@Override
public String execute() throws Exception {
if(!strname.equals(""))
{
return "success";
}
else
{
return "fail";
}

}
    
    public String getname()
    {
     return strname;
    }
    public void setname(String name)
    {
     this.strname=name;
    }
--------------------------------------------------------------------------------------------------------------------------------------------------------------
struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="com.xyz.action" extends="struts-default">
<action name="check" class="com.xyz.action.UserAction">
 <result name="success">/success.jsp</result>
 <result name="fail">/fail.jsp</result>
</action>
 
</package>
</struts>    
--------------------------------------------------------------------------------------------------------------------------------------------------------------
我的困惑是 struts2框架是自动根据form传递的控件name属性的值来获取表单提交的控件吗?就是 在action中只要有
setname(String name) 就能得到该控件的值了 对吗?如果是这样的话 那我将form中控件的name 改为loginname即
<input type="text" name="loginname" id="loginname"/>,action中也改为 setloginname(String name),为什么就得不到
值了呢?还是我那个地方没整对?


------解决方案--------------------
set  你用eclipse 自动生成,估计你set/get 写错了。
------解决方案--------------------
同新手,表单提交,action是根据相应的setter和getter方法来得到值的,我觉得你如果把name改为loginName,那你set方法括号内参数也应该改为loginName,这样它才能拿到这个值吧。我写的时候倒是没思考这个问题,一般属性名中跟控件名相同,然后直接alt+shift+s然后选generate getters and setters 然后选select all MyEclipse就会自动帮我们加上