Struts Validation
在Form中设置valiate方法实现表单中元素的检验:
Form
public ActionErrors validate(
ActionMapping mapping,
HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if(getName().equals("")){
errors.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("login.error.name.required"));
}
if(getPassword().equals("")){
errors.add("passError",new ActionMessage("login.error.password.requrired","str"));
}
return errors;
} 在form中,如果有ActionErrors错误,会自动回到输入见面。
将错误信息返回的方法,如下:
Jsp
<html:messages id="msg" property="passError"> --- 无 property 默认输出所有错误信息
<bean:write name="msg"/>
</html:messages>
其中,html:message 替代 html:errors
<html:errors/> Action
if(!"no1red".equals(name)){
ActionMessages messages = new ActionMessages();
messages.add("nameMessages",new ActionMessage("login.error.name.match"));
messages.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage("login.error"));
saveMessages(request,messages);
request.setAttribute("nameMatch", messages);
return mapping.findForward("fail");
}
return mapping.findForward("succ"); Jsp:
第一种用saveMessages的方法,在页面中显示错误信息:
saveMessages(request,messages);
<html:messages message="true" id="msg" property="nameMessages">
<%= pageContext.getAttribute("msg") %>
</html:messages>
property 的名称 nameMessages 和 Action 中的 nameMessages 向对应。
或者将 <%= pageContext.getAttribute("msg") %> 用 <bean:write name="msg"/> 来替代。
<html:messages id="msg" message="true"> ---- 输出所有错误消息
<bean:write name="msg"/>
</html:messages> 第二种方法,用request.saveAttribute:
request.setAttribute("nameMatch", messages);
<logic:messagesPresent name="nameMatch">
<table border="1" bgcolor="yellow" width="100%" align="center"><tr><td>
<p>
<img src="/images/icon-warning.gif" border="0"
vspace="2" hspace="10" align="center">
<bean:message key="warnings.heading"/>
</p>
<ul>
<html:messages id="error" name="nameMatch">
<li><bean:write name="error"/></li>
</html:messages>
</ul>
</td></tr></table>
<p>
</logic:messagesPresent>