`
haohao-xuexi02
  • 浏览: 215006 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Struts验证消息ActionMessages沉思

阅读更多

ActionMessages以一个HashMap存储ActionMessage.Map中的key是一个标识,其对应的value是一个List对象,所有的ActionMessage存储在List中.也就是说key标识了一组ActionMessage.

    先介绍涉及到的类中的几个常用方法,然后给出几个示例代码,帮助理解.
  • ActionMessage
    • ActionMessage(String key)
      该方法接受一个字符串,字符串是在资源文件种配置的key值,必须在配置文件中进行相关配置.
    • ActionMessage(String key,Object value)
      ActionMessage(String key,Object value0,Object value1)
      ActionMessage(String key,Object value0,Object value1,Object value2)
      ActionMessage(String key,Object value0,Object value1,Object value2,Object value3)
      上面4个方法第一个参数同样是资源文件中配置的key值,同样必须在配置文件中进行相关配置.后面的参数为资源文件中key所对应的信息中需要的参数
    • ActionMessage(String key,Object[] values)
      这种方法第一个参数同上,第二个参数接受一个Object数组,其中保存key在资源文件中对应信息需要的参数.
    • ActionMessage(String msg,false  这个方法显示自定义消息,即消息输出内容为msg。
  • ActionMessages
    • ActionMessages.add(String property,ActionMessage message)
      第一个参数property对应于<html:messages>标签中的property属性,具体使用方法在后面介绍. property的值一般采用ActionMessages类中的静态常量ActionMessages.GLOBAL_MESSAGE,也可以自己定义一个key.该方法执行时,先判断ActionMessages中有没有该key,如果没有就新添加对key-List键值对;如果有同样的key,就先获取该key对应的Value并转换为List对象,然后将(ActionMessage)message添加进List对象中.
    • ActionMessages.add(ActionMessages ams)
      该方法将参数中保存的ActionMessage合并到调用ActionMessages中.
  • Action及其所有子类
    • addMessages(HttpServletRequest request,ActionMessages messages)
      该方法首先检查request对象中是否有ActionMessages对象,如果有对象,则将接收的ActionMessages合并到request中,如果没有,用setAttribute(Globals.MESSAGE_KEY,messages)方法将messages添加进去.如果一个Action中需要显示多条错误信息,推荐使用该方法.(Globals.MESSAGE_KEY = "org.apache.struts.action.ACTION_MESSAGE")
    • saveMessages(HttpServletRequest request,ActionMessages messages)
      该方法保存messages时,如果request中已经有一个ActionMessages对象,则用新的覆盖原有的.不推荐使用该方法,该方法容易发生丢失信息的情况.
    • addErrors()和saveErrors()
      这两个方法与addMessages()和saveMessages()相似,不过在HttpServletRequest.setAttribute()时的参数不一样,这两个方法是:setAttribute(Globals.ERROR_KEY,messages)添加的.(Globals.ERROR_KEY = "org.apache.struts.action.ERROR")
           在request中添加的ActionMessages在页面显示时,用<html:messages>标签进行显示,下面介绍一下该标签和经常配套使用的<logic:messagePresent>标签.
  <html:messages>
 id  必须指定id属性.<html:messages>标签作用是遍历ActionMessages对象中的所有    ActionMessage.类似<logic:iterator>,每次循环都定义一个名称为id指定的页面范围的bean,然后用    <bean:write>标签进行输出.
 bundle  绑定一个MessageResources,不指定的时候从上下文中配置的资源中检索.一般不指定bundle属性.
 locale  指定本地化信息,不指定时和Session的本地化信息相同,一般不用指定.
 name  指定ActionMessages对象在request中的key.不指定时,默认用      GLOBALS.ERROR_KEY="org.apache.struts.action.ERROR",用Action.addMessages()方法添加的信息将不    被显示,用Action.addErrors()方法添加的信息才会被显示.一般不指定.
 property  指定哪些ActionMessage将被显示,与ActionMessages.addMessage(String property,ActionMessage am)中的property参数相对应.不指定的时候显示所有信息.
 header  指定一个资源信息key,在显示ActionMessages前打印到页面上,可选.
 footer  指定一个资源信息key,在显示完ActionMessages后打印到页面上,可选.
 message

取值为true/false,默认为false.为false或不指定时,在request中查找key=Globals.ERROR_KEY的ActionMessages bean.当该属性设置为true时,在request中查找key=Globals.MESSAGE_KEY的ActionMessages bean,同时name属性的值将被忽略.

注:true显示 this.addMessages(request,messages); 里面的消息,false显示 this.addErrors(request, messages);消息。

 <html:messages>的message属性如果设定为true,会输出ActionMessages中所储存的讯息,Message表示一个提示讯息,也许使用者输入了不正确的资讯,例如在输入名称与密码时打错了字,程式要提示使用者他们输入了不正确的讯息。

    <html:messages>的message属性如果不设定为true,会输出ActionErrors中所储存的讯息,Error代表的是一个操作方面的错误,例如错误操作导致使用者名称或密码为空(当然也许也是故意的)。

   
<logic:messagesPresent>和<logic:messagesNotPresent>标签,只支持message,name,property3个属性,作用和<html:messages>相同,就不再介绍

下面给出一段代码,帮助大家理解,这里只写了关键代码.
1. Action 类中的部分代码:
Java代码 复制代码
  1. ActionMessages ams = new ActionMessages();    
  2. ams.add(ActionMessages.GLOBAL_MESSAGE,   
  3.           new ActionMessage("addMessages : global message",false));    
  4. ams.add("error",   
  5.           new ActionMessage("addMessages : error message",false));    
  6. ams.add("info",   
  7.           new ActionMessage("addMessages : info message",false));    
  8. this.addMessages(httpServletRequest,ams);    
  9.   
  10. ActionMessages errorMessage = new ActionMessages();    
  11. errorMessages.add(ActionMessages.GLOBAL_MESSAGE,   
  12.          new ActionMessage("addErrors : global message",false));    
  13. errorMessages.add("error",   
  14.          new ActionMessage("addErrors : error message",false));    
  15. errorMessages.add("info",   
  16.         new ActionMessage("addErrors : info message",false));    
  17. this.addErrors(httpServletRequest,errorMessages);  
ActionMessages ams = new ActionMessages(); 
ams.add(ActionMessages.GLOBAL_MESSAGE,
          new ActionMessage("addMessages : global message",false)); 
ams.add("error",
          new ActionMessage("addMessages : error message",false)); 
ams.add("info",
          new ActionMessage("addMessages : info message",false)); 
this.addMessages(httpServletRequest,ams); 

ActionMessages errorMessage = new ActionMessages(); 
errorMessages.add(ActionMessages.GLOBAL_MESSAGE,
         new ActionMessage("addErrors : global message",false)); 
errorMessages.add("error",
         new ActionMessage("addErrors : error message",false)); 
errorMessages.add("info",
        new ActionMessage("addErrors : info message",false)); 
this.addErrors(httpServletRequest,errorMessages);
 

2.  JSP文件中的部分代码:
 
Java代码 复制代码
  1. <html:messages id="message">    
  2.   <bean:write name="message"/>    
  3.   <br/>    
  4. </html:messages>    
  5. <!-- 上面代码的输出结果:    
  6.   addErrors : global message    
  7.   addErrors : error message    
  8.   addErrors : info message    
  9. -->    
  10.   
  11. <html:messages id="message" property="info">    
  12.   <bean:write name="message"/>   
  13.   <br />    
  14. </html:messages>    
  15. <!-- 这段代码的输出结果为:    
  16.   addErrors : info message    
  17. -->    
  18.   
  19.      
  20. <html:messages id="message" message="true">    
  21.   <bean:write name="message"/>    
  22.   <br />    
  23. </html:messages>    
  24. <!-- 这段代码的输出结果:    
  25.   addMessages : global message    
  26.   addMessages : error message    
  27.   addMessages : info message    
  28. -->    
  29.   
  30. <html:messages id="message" message="true" property="info">    
  31.   <bean:write name="message"/>    
  32.   <br />   
  33. </html:messages>    
  34. <!-- 这段代码的输出结果为:    
  35.   addMessages : info message    
  36. -->   
<html:messages id="message"> 
  <bean:write name="message"/> 
  <br/> 
</html:messages> 
<!-- 上面代码的输出结果: 
  addErrors : global message 
  addErrors : error message 
  addErrors : info message 
--> 

<html:messages id="message" property="info"> 
  <bean:write name="message"/>
  <br /> 
</html:messages> 
<!-- 这段代码的输出结果为: 
  addErrors : info message 
--> 

  
<html:messages id="message" message="true"> 
  <bean:write name="message"/> 
  <br /> 
</html:messages> 
<!-- 这段代码的输出结果: 
  addMessages : global message 
  addMessages : error message 
  addMessages : info message 
--> 

<html:messages id="message" message="true" property="info"> 
  <bean:write name="message"/> 
  <br />
</html:messages> 
<!-- 这段代码的输出结果为: 
  addMessages : info message 
--> 
 

        如果结合上<logic:messagesPresent>标签,将可以做出自由度很高的错误信息显示效果,具体如何表现这里就不在细说了.<logic:messagePresent>的使用方法大家自己体会,我相信大家掌握了<html:messages>,一定能驾驭<logic:messagesPresent>

原文:http://lijiaji-hy.iteye.com/blog/396968

分享到:
评论

相关推荐

    struts2数据验证与国际化

    除了Action验证,Struts2还支持ActionForm验证,这种方式将验证逻辑放在ActionForm类中,通常适用于简单的业务逻辑验证。不过,随着Struts2的发展,Action验证逐渐成为更推荐的实践。 至于国际化,Struts2提供了一...

    struts1学习的一个登录验证的例子

    本示例是关于如何在Struts1中实现一个简单的登录验证功能,这对于初学者理解Struts1的工作原理和应用实践非常有帮助。 首先,我们要了解Struts1的基础架构。它通过定义Action类来处理用户请求,ActionForm类存储...

    Struts2用validate方法进行表单验证

    这个方法返回一个`FieldAware`对象,例如`ActionErrors`或`ActionMessages`,用于存储验证错误。如果验证失败,该方法应将错误消息添加到返回的对象中。例如: ```java public class UserAction extends ...

    一个利用struts做的简单国际化

    1、struts国际化的配置 ... 理解ActionMessage和ActionMessages两个对象的区别 如何传递国际化消息? * 调用saveMessage()传递普通消息 如何显示国际化消息? 通过标签显示消息(可以显示普通消息和错误消息)

    struts中ActionForm的validate方法使用小得

    ActionErrors是Struts提供的一个集合类,它继承自ActionMessages,用于存储ActionMessage对象。 ActionMessage是一个简单的容器,它持有错误消息的键值,这些键值通常对应于资源文件中的字符串,以便支持多语言环境...

    Struts2-ActionError-ActionMessage-Example

    在Struts2框架中,ActionError和ActionMessage是处理用户输入验证和错误反馈的重要组件,它们使得开发者能够优雅地管理应用程序中的错误信息和用户消息。 ActionError类是用来存储错误信息的,它继承自`java.lang....

    struts1架构登录代码

    ActionMessages errors = new ActionMessages(); errors.add("error", new ActionMessage("login.error")); saveErrors(request, errors); return mapping.findForward("failure"); } } // 假设的验证方法,...

    Struts记录整理文档

    本文档将深入讲解Struts中的`ActionErrors`和`ActionMessages`,以及如何在页面上显示这些错误和消息。 1. **ActionErrors**: `ActionErrors` 是 Struts 提供的一个用于收集和存储错误信息的容器。在上述代码中,...

    2009MLDN魔乐科技Struts课堂05-Struts_Struts国际化处理.rar

    4. **Action及JSP中的使用**:在Action类中,我们可以使用`ActionMessages`或`ActionErrors`对象来添加错误或消息,并在JSP页面中通过`&lt;bean:message&gt;`或`&lt;fmt:message&gt;`标签显示这些消息。这些标签会自动从配置的...

    struts1.x 最简洁国际化 源代码

    然后,Action可以通过`ActionMessages`或`ActionErrors`将消息添加到请求上下文,供视图层使用。 7. **视图渲染**: - JSP页面上,使用`&lt;bean:message key="messageKey"/&gt;`来显示资源包中的消息,其中`messageKey`...

    struts技术实现留言功能

    Struts提供了ActionError和ActionMessages机制来处理验证错误,以及全局的异常处理器来捕获并处理程序运行时可能出现的异常。 总结来说,使用Struts技术实现留言和发帖功能,主要包括以下几个步骤: 1. 创建Action...

    Struts解决重复提交步骤

    ### Struts解决重复提交步骤 在Web应用开发中,表单重复提交问题一直是困扰开发者的一个常见问题。特别是在一些涉及敏感操作如订单提交、支付确认等场景下,避免重复提交尤为重要。Struts框架作为Java Web应用开发...

    struts1多国语言的实现

    - 在ActionForm中,我们可以使用`ActionMessages`对象来收集和显示错误或提示消息。这些消息可以在资源文件中定义,然后通过`getText()`方法获取。 5. **设置用户首选语言** - 用户的首选语言通常通过HTTP请求头...

    struts国际化功能

    在JSP页面中,我们可以使用Struts标签库(Struts Tags)来显示这些消息。例如: ```jsp &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; ()"&gt; &lt;p&gt;&lt;s:text name="message"/&gt; &lt;!-- 更多页面内容... --&gt; ``...

    Struts1做的增删改查

    - Struts1提供了ActionError和ActionMessages机制来处理用户输入验证错误,可以通过配置文件定义全局错误页面,提高应用的健壮性。 8. **国际化和本地化**: - Struts1支持多语言,可以在资源文件中定义不同语言...

    Struts API官方英文版

    8. **异常处理**:Struts提供了ActionError和ActionMessages,用于处理应用程序中的错误和消息。全局异常处理器可以捕获并统一处理未被捕获的异常。 9. **Struts标签库**:除了基本的HTML标签,Struts还提供了一套...

    struts1开发库

    8. **异常处理**:Struts1提供了ActionError和ActionMessages机制来处理错误和消息。开发者可以在Action中抛出异常,框架会捕获并显示给用户,确保应用程序的健壮性。 9. **验证框架**:通过Validator插件,Struts1...

    Struts2&ActionError&ActionMessage&Demo

    4. **显示错误和消息**:在JSP页面中,使用Struts2的标签库(如`s:actionerror`和`s:actionmessage`)来遍历并显示`ActionContext`中的`ActionErrors`和`ActionMessages`。 ```jsp ()"&gt; ()"&gt; ``` 5. **处理...

    Struts 1.1 API.zip

    7. **国际化和本地化**:Struts 1.1支持国际化的消息资源管理,通过`messageResources`配置项,可以在不同语言环境下显示相应的文本。 8. **异常处理**:Struts 1.1提供了ActionError和ActionMessages机制,用于...

Global site tag (gtag.js) - Google Analytics