struts的验证框架validator的问题?在线等待,解决马上揭帖......
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
ServletContext application = getServlet().getServletContext();
String validationKey = getValidationKey(mapping, request);
Validator validator = Resources.initValidator(validationKey, this,
application, request, errors, page);
try {
validatorResults = validator.validate();
} catch (ValidatorException ex) {
//这里捕获了异常
}
return errors;
}
这是我form的代码,不知道有什么错误?请高手指点......
如果能提供样例代码最好了。
问题点数:100、回复次数:5Top
1 楼wuyg(平平)回复于 2006-03-12 14:27:06 得分 50
在form中写:
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
//ActionErrors errors = new ActionErrors(); \\ This will skip over validation.xml
ActionErrors errors=super.validate(mapping,request);
if (getType() != 1) {
errors.add(ActionErrors.GLOBAL_MESSAGE,
new ActionMessage("recommendedActionForm.roles"));
}
}
}
return errors;
}
在struts-config.xml的相应的的mapping 中设置validate="true"Top
2 楼Tzxqx(风)回复于 2006-03-12 18:07:51 得分 0
楼上的朋友,请问一下:
if (getType() != 1) {
errors.add(ActionErrors.GLOBAL_MESSAGE,
new ActionMessage("recommendedActionForm.roles"));
}
我搞不懂既然要用validator框架验证,你在这加这个判断是为什么?
Top
3 楼Tzxqx(风)回复于 2006-03-12 18:41:56 得分 0
那位仁兄能贴点代码出来学习一下阿!Top
4 楼wuyg(平平)回复于 2006-03-12 22:34:48 得分 0
因为struts的validator只能实现一些简单的校验,所以当涉及到复杂校验的时候,就必须重载
validate方法。
如果没有复杂校验的要求,则不用重载validate方法,只需要集成ValidatorForm类即可。
当然,在struts-config.xml的相应的的mapping 中设置validate="true"Top
5 楼woolceo(努力升仙)回复于 2006-03-12 22:51:46 得分 50
楼主不需要在Form里面实现validate方法...而且Form继承ValidatorForm就可以了...就等于说你的ActionForm其实就是一个简单的javabean,提供setter/getter就可以了...
其实更好的方法是直接实现DynamicValidatorForm...
补充楼上的:validate="true"可以不用设置,true是默认值...当然设置了会更直观.Top




