在ActionForm的validate()方法中会返回一个ActionErrors对象,ActionErrors对象中封装了一个或多个ActionError对象,每个ActionError对象均代表一个错误信息。

    在ActionForm的validate()方法中产生的ActionErrors对象将自动保存到请求对象中,在表单JSP页面中使用<html:errors>标签可直接显示错误信息的内容。而在Action对象中产生的ActionErrors对象则必须使用Action的saveErrors()方法才能将ActionErrors保存到请求对象中。

    例如:

 

 
  
  1. //表单验证  
  2. public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {  
  3.  
  4.     ActionErrors errors = new ActionErrors();  
  5.     ...  
  6.     errors.add("username"new ActionMessage("username has existed!"));  
  7.     ...  
  8.     return errors;  

 

 
  
  1. //Action中的execute方法  
  2. public ActionForward execute(ActionMapping mapping, ActionForm form,  
  3.            HttpServletRequest request, HttpServletResponse response)  
  4.            throws Exception {  
  5.  
  6.     ActionMessages messages = new ActionMessages();  
  7.     ...  
  8.     messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("login.message.failed"));  
  9.     saveErrors(request, messages);  
  10.     ...  

 

    从Struts1.1开始,加入了一个新的消息类ActionMessage,而且ActionMessage以ActionErrror的父类存在。加入并推荐使用ActionMessage的目的是为了让所有的开发人员将ActionMessage表示一般意义的消息,而不仅局限于报告性或警告性的消息。