FormBean的验证:
1、重写FormBean的validate方法。
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
ActionErrors errors = new ActionErrors();
if (name == null || name.equals("")) { //nameEmpty为错误信息名
errors.add("nameEmpty", new ActionMessage("empty.error", "UserName"));
}
if (pwd == null || pwd.equals("")) {
errors.add("pwdEmpty", new ActionMessage("empty.error", "PassWord"));
} //empty.error定义在login.properties文件中,其value值为{0} must not be empty!所以empty.error后面会有UserName和PassWord。
return errors;
}
2、在struts-config.xml中配置action节点的validate与input属性,validate表示是否调formBean的validate方法,input是如果出错的话跳转的错误处理界面。注意:如果formBean重写的了validate方法并且action节点validate属性为true,那一定要添加input属性。
3、在struts-config.xml中添加<message-resources parameter="org.koyo.views.login" />注意:其中的parameter属性的值是login.properties文件的路径。(容易被漏掉,多加注意)
4、在界面使用<html:errors />或<html:errors property="nameEmpty"/>显示错误信息。
步骤2、3、4,尤其是步骤3,经常会漏掉,应多加注意!!!
ActionBean的验证
1、在ActionBean中添加代码。
ActionMessages messages = new ActionMessages();//不要与FormBean混淆,此处直接就是ActionMessage
messages.add("inputError", new ActionMessage("input.error"));
super.saveErrors(request, messages);//此句容易被漏掉,且常会被错写成super.saveMessage(request,messages);
return mapping.getInputForward();
步骤2、3、4,与FormBean验证相同。
主要区别:ActionBean验证主要做业务,需要与数据库交互,比如用户名是否可用,转账余额是否可用,出货余额等验证;formBean虽然完成客户端验证功能,但需要与服务器交互。注意不同的区分标准。。
本文章大部分内容转载自 西安云工厂http://www.xaygc.com/struts.html