初学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就会自动帮我们加上