深入探讨struts的ActionMessages消息机制
2008-01-27 17:01
441 查看
深入探讨struts的ActionMessages消息机制
2007-11-22 10:23:01标签:ActionMessages 消息机制 struts [推送到博客圈]
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。/article/4127851.html | ||||||||||||||||
在介绍ActionMessages前,我觉得有必要先介绍一下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在资源文件中对应信息需要的参数. 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>
下面给出一段代码,帮助大家理解,这里只写了关键代码. 1. Action 类中的部分代码: 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文件中的部分代码: <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> 对struts的ActionMessages的讨论就到这里,希望这篇文章能对广大刚接触struts的朋友们有所帮助. |
相关文章推荐
- 深入探讨struts的ActionMessages消息机制
- 深入探讨struts的ActionMessages消息机制
- struts的ActionMessages消息机制
- 深入探讨struts的ActionMessages消息机制(转)
- 深入探讨struts的ActionMessages消息机制(转)
- iOS开发之深入探讨runtime机制03-runtime的方法与消息
- 深入探讨 Spring 与 Struts 的集成方案
- 深入浅析Android消息机制
- .深入探讨MFC消息循环和消息泵
- 深入探讨Java的类加载机制
- 深入探讨 Spring 与 Struts 的集成方案(1)
- 深入探讨C#中Socket一次性搞定消息发送
- (转载)Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
- 深入探讨MFC消息循环和消息泵
- Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
- iPhone消息推送机制实现与探讨
- 深入剖析Android消息机制
- 深入消息机制
- 深入探讨 Spring 与 Struts 的集成方案
- Sql Server之旅——第十四站 深入的探讨锁机制