在ActionForm的validate()方法中会返回一个ActionErrors对象,ActionErrors对象中封装了一个或多个ActionError对象,每个ActionError对象均代表一个错误信息。
在ActionForm的validate()方法中产生的ActionErrors对象将自动保存到请求对象中,在表单JSP页面中使用<html:errors>标签可直接显示错误信息的内容。而在Action对象中产生的ActionErrors对象则必须使用Action的saveErrors()方法才能将ActionErrors保存到请求对象中。
例如:
- //表单验证
- public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
- ActionErrors errors = new ActionErrors();
- ...
- errors.add("username", new ActionMessage("username has existed!"));
- ...
- return errors;
- }
- //Action中的execute方法
- public ActionForward execute(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response)
- throws Exception {
- ActionMessages messages = new ActionMessages();
- ...
- messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("login.message.failed"));
- saveErrors(request, messages);
- ...
- }
从Struts1.1开始,加入了一个新的消息类ActionMessage,而且ActionMessage以ActionErrror的父类存在。加入并推荐使用ActionMessage的目的是为了让所有的开发人员将ActionMessage表示一般意义的消息,而不仅局限于报告性或警告性的消息。