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

struts2服务端验证问题
郁闷  

我用的是struts2框架,采用的的是动态action验证,即一个action中包含多个方法,但是在struts.xml中没有写方法名.然后 配置文件怎么写.网上说是 Action类名-方法名-validation.xml。可是我试了。不起作用。当我改成Action类名-validation.xml
的时候。可以了 但是新的问题又出现了。当不是执行这个action的方法是也去执行struts2的验证了。
我在jsp页面这样访问的userAction!doReg

求高手指教。下面贴出我的代码
1.
UserAction-doReg-validation.xml

2.
<struts>

<package name="user" extends="struts-default" namespace="/user">
<action name="userAction" class="com.tarena.dang.web.action.UserAction">
<result name="input" >
/WEB-INF/jsp/user/register_form.jsp
</result>
<result name="register_form" >
/WEB-INF/jsp/user/register_form.jsp
</result>
<result name="verify_form" >
/WEB-INF/jsp/user/verify_form.jsp
</result>

</action>
</package>
</struts>
3.UserAction类
public String doReg() {
try {
boolean bool = iuserServ.reg(user);
if (bool) {
return "verify_form";
}
return "register_form";
} catch (Exception e) {
return "error";
}
}

------解决方案--------------------
Action类名-方法名-validation.xml 这个要放到和类一个包路径下。
工作中一般是这样写的:
<package name="user" extends="struts-default" namespace="/user">
<action name="userAction_*" class="com.tarena.dang.web.action.UserAction" 
method="{1}>

验证文件就为:UserAction-userAction_doReg-validation.xml
访问的时候就是userAction_doReg.action