`

ActionMessages的使用

阅读更多

原来都是一直用struts1.1,所以一直以来都用ActionErrors,今天自己做了点东东,想用struts1.2了,但是它又不提倡用ActionErrors,只能转为ActionMessage了.就学了点..留下来...仅供以后参考...   1.在建struts时里面的struts-config.xml里面需要加入 <message-resources parameter="ApplicationResources" />如果你想用到这个配置文件读数据的话...当然可以不用,直接在类里写入要输出的文字也可.ApplicationResources这个文件放在src目录下叫ApplicationResources.properties.......在ApplicationResources文件里加入一条记录:errors.user.login=error,error,error!!
  2.在struts的action里加入
    ActionMessages messages = new ActionMessages();
    messages.add("errorMsg", new ActionMessage("errors.user.login"));
    addMessages(request, messages);
   原先以为和ActionErrors类似是saveMessage这样的方法的,可是一直尝试在页面就是显示不出我要的数据,在网上查找了一会发现有人用addMessages方法,就拿来试试,结果真的就显示了...
 3.页面代码显示:
    <html:messages message="true" property="errorMsg">    
        <bean:write />  
    </html:messages>
    有用html:messages标签来显示...
    <html:messages>的message属性如果设定为true,会输出ActionMessages中所储存的讯息,Message表示一个提示讯息,也许使用者输入了不正确的资讯,例如在输入名称与密码时打错了字,程式要提示使用者他们输入了不正确的讯息。
    <html:messages>的message属性如果不设定为true,会输出ActionErrors中所储存的讯息,Error代表的是一个操作方面的错误,例如错误操作导致使用者名称或密码为空(当然也许也是故意的)。
  以上的三步就可以实现ActionMessages的显示了...
  但是ActionMessages还有一些更好功能,虽然还没有用到,但是在网上发现了先贴上以后可以用到:
  有人会问,错误信息只能存放在资源文件中吗,其实不是这样。不需要资源文件也可以产生错误信息。
  我们再来看一下ActionMessage的另一种构造方法:
  ActionMessage(String key,boolean isresource)
  如果isresource值为true,则表示key是资源文件中的key,产生的消息就是与key相对应的消息
  如果isresource值为false,则表示key为一条普通的消息。
  如果上面的error.add改为error.add("testerror",new ActonMessage("这是一条自定义消息",false",));那么页面上显示的将是:这是一条自定义消息.
  另外还可以用ActionMessage产生复合消息,比如我们要输出:xxx不能用作用户名,其中xxx是一个变量。
  首先我们在资源文件中加一个条复合消息
  testmsg = {0}不能用作用户名。这里{0}是要被替换的参数。
  我们再来看一下ActionMessage的另一中构造方法
  ActionMessage(String key,Object value0);
  也就是说用value0的值来替换{0}
  我们修改error.add为error.add("testerror",new ActonMessage("testmsg",""))
  那么JSP页面上将显示:不能用作用户名。
  当然在一条复合消息中也可带多个参数,参数依次为{0},{1},{2}或更多
  例如:loginUser = 用户名:{0} 姓名:{1} 登录次数:{2}.....
  那么在产生错误消息时就用new ActionMessage(String key,Object value0,Object value1,Object value2.....)或者使用对象数组new ActionMessage(String key,Object[] values)
  String[] detail = {"Admin","王晶","12"};
  error.add("testerror",new ActionMessage("loginUser",detail));

在介绍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>

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属性的值将被忽略.
分享到:
评论

相关推荐

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

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

    Struts记录整理文档

    显示`ActionMessages`通常使用`&lt;html:messages&gt;`或`&lt;logic:messagesPresent&gt;`标签。例如,`&lt;html:messages id="names" bundle="name"&gt;`会显示所有与`names`相关的消息,而`&lt;bean:write name="names"/&gt;`用于输出消息...

    struts2官方例子8-资源配置文件的使用(包括国际化)

    3. **国际化支持**:为了实现国际化,你需要为每种语言创建一个对应的资源文件,如`ActionMessages_en.properties`(英语)、`ActionMessages_fr.properties`(法语)等。Struts2会根据用户的浏览器设置自动选择正确...

    Struts1.x其它文本编辑器使用SQL2005.rar

    - 如何使用Struts1.x的ActionError和ActionMessages来处理和显示应用程序中的错误信息。 - 异常处理机制,如Global Exception Handler,确保程序在遇到未预期错误时能够优雅地恢复。 7. **国际化和本地化**: - ...

    Struts 之旅 - 多国语言

    在Action类中,你可以使用`ActionMessages`或`ActionErrors`对象来添加、存储和传递消息。例如: ```java ActionMessages messages = new ActionMessages(); messages.add(ActionMessages.GLOBAL_MESSAGE, new ...

    struts中ActionForm的validate方法使用小得

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

    struts国际化功能

    3. 在Action中使用`ActionMessages`或`ActionErrors`添加和显示消息。 4. 在JSP中使用Struts标签显示本地化消息。 5. 实现语言切换功能,动态改变资源文件的加载。 通过这些步骤,开发者可以轻松地为SSH框架的Web...

    07Struts错误处理

    ActionMessages messages = new ActionMessages(); ``` - **添加错误信息:** - 向`ActionMessages`对象中添加错误信息。 - 示例代码: ```java messages.add("loginFailed", new ActionMessage("error.login...

    struts分页实例

    在Action中,我们可以使用`ActionMessages`添加消息,并通过`saveMessages`方法保存到请求上下文中。在JSP页面上,使用`&lt;html:messages&gt;`标签来显示这些消息。 ```java ActionMessages messages = new ...

    struts1多国语言的实现

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

    Struts解决重复提交步骤

    ActionMessages errors = new ActionMessages(); errors.add("error2", new ActionMessage("error.transaction.token")); saveErrors(request, errors); return mapping.findForward("diary"); } // 处理表单...

    webwork国际化

    ActionMessages errors = new ActionMessages(); errors.add("globalError", ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.loginFailed")); saveErrors(request, errors); ``` 在JSP页面中: ```...

    struts2数据验证与国际化

    传统的方法包括在JSP页面或Servlet中进行验证,以及使用JavaScript进行前端验证。然而,这些方法往往不够灵活和易于维护。Struts2引入了自己的数据验证机制,这使得验证过程更加系统化和模块化。 Struts2的数据验证...

    Struts对国际化支持(国际化概念及具体操作详细讲解)

    ActionMessages messages = new ActionMessages(); messages.add("greeting", new ActionMessage("greeting")); saveErrors(request, messages); ``` 3. **在JSP中显示消息**:在JSP页面上,使用`&lt;fmt:message&gt;...

    struts国际化

    ActionMessages messages = new ActionMessages(); messages.add("info", new ActionMessage("label.welcome")); saveErrors(request, messages); ``` 然后在JSP页面中,通过`&lt;logic:messagesPresent&gt;`标签显示这些...

    Struts2-ActionError-ActionMessage-Example

    ActionMessages messages = new ActionMessages(); messages.add("success", new ActionMessage("messages.success.save")); ActionContext.getContext().getValueStack().push(messages); ``` - 显示消息:在...

    StrutsInAction中文

    8. **异常处理**:学习如何在Struts中配置全局和局部异常处理策略,使用ActionError和ActionMessages管理错误和消息。 9. **Tiles框架集成**:Struts可以与Tiles框架结合使用,实现更复杂的页面布局和组件重用。 ...

    Struts入门实践

    - **错误消息处理**: 使用 `ActionMessages` 来管理错误消息,并通过 `ActionMessage` 定义具体的错误提示信息。 - **转向页面**: 根据不同的处理结果,返回不同的 `ActionForward` 对象,以实现页面跳转。 #####...

Global site tag (gtag.js) - Google Analytics