在Struts里进行表单验证和业务逻辑验证真是一个很麻烦的事情,看书、上网了解了ActionMessage与ActionErrors的基本知识,可以拿来书上或网上的例程来试试。错、错,又错,还是有错,我说是的我的程序结果有错误,而不是真的显示出了验证错误信息。
怎么回事呢?经过一天的不断测试,成功了...
经验就是:
在ActionFrom中使用ActionErrors
错误信息添加用add(“error_key“,new ActionError(“error.input.name“))
jsp中使用 显示错误。<html:errors property="error_key"/>
在Actoin中使用ActionMessages
错误信息添加使用add(“error_key“,new ActioinMessage(“errors.loginerror“))
<html:messages id="errors" message="true">
<font color="red"><bean:write name="errors"/></font>
</html:messages>
jsp中使用 来显示错误。不要管id和name中是什么,只要两者一样,就会显示所有的ActionMessages出来
以下是我的代码
login.jsp:
<html:messages id="errors" message="true">
<font color="red"><bean:write name="errors"/></font>
</html:messages>
<html:form action="/loginAction">
userName:<html:text property="userName"/><html:errors property="name"/>
<br>
userPWD:<html:text property="userPWD"/><html:errors name="pwd"/>
<br>
year:<html:select property="operationYear">
<html:options collection="years" property="id" labelProperty="name"/>
</html:select>
<html:submit property="submit" value="Submit"/><br>
<html:reset value ="Reset"/>
</html:form>
LoginAction
LoginForm loginForm = (LoginForm) actionForm;
ActionErrors errors = new ActionErrors();
if (loginForm.getUserName().toString().equals("admin") &&
loginForm.getUserPWD().toString().equals("111")) {
}
else {
errors.add("loginerror", new ActionMessage("errors.loginerror"));
}
if (!errors.isEmpty()) {
saveErrors(httpServletRequest, errors);
return (actionMapping.findForward("error"));
}
return (actionMapping.findForward("seccess"));
LoginForm
ActionErrors errors = new ActionErrors();
if(userName==null||userName.length()<1){
errors.add("name",new ActionError("test.name"));
}
if(userPWD==null||userPWD.length()<1){
errors.add("pwd",new ActionError("test.pwd"));
}
return errors;