struts入门问题--关于资源文件

在FormBean的validate验证方法中,如果发生错误,使用errors.add("tt",   new   ActionMessage("err.err"));方法返回错误消息,在ActionMessage("err.err")需要使用资源文件中的err.err定义消息。那么,在返回消息的时候如何不使用资源文件中的定义?? 

 

1:在FormBean的validate验证方法中加入以下  
  ActionMessages   messages   =   new   ActionMessages();  
  ActionMessage   message   =   new   ActionMessage("message.sucess","sucess");  
  messages.add(ActionMessages.GLOBAL_MESSAGE,message);  
  saveMessages(request,message);   
 

2:这是<html:errors/>标签doStartTag()方法里的主要代码:  
  for(Iterator   reports   =   property   !=   null   ?   errors.get(property)   :   errors.get();   reports.hasNext();)  
                  {  
                          ActionError   report   =   (ActionError)reports.next();  
                          if(!headerDone)  
                          {  
                                  if(headerPresent)  
                                  {  
                                          message   =   RequestUtils.message(pageContext,   bundle,   locale,   "errors.header");  
                                          results.append(message);  
                                          results.append(lineEnd);  
                                  }  
                                  headerDone   =   true;  
                          }  
                          if(prefixPresent)  
                          {  
                                  message   =   RequestUtils.message(pageContext,   bundle,   locale,   "errors.prefix");  
                                  results.append(message);  
                          }  
                          message   =   RequestUtils.message(pageContext,   bundle,   locale,   report.getKey(),   report.getValues());  
                          if(message   !=   null)  
                          {  
                                  results.append(message);  
                                  results.append(lineEnd);  
                          }  
                          if(suffixPresent)  
                          {  
                                  message   =   RequestUtils.message(pageContext,   bundle,   locale,   "errors.suffix");  
                                  results.append(message);  
                          }  
                  }  
  重要是这一句,message   =   RequestUtils.message(pageContext,   bundle,   locale,   report.getKey(),   report.getValues());  
  而message()方法如下:  
          public   static   String   message(PageContext   pageContext,   String   bundle,   String   locale,   String   key,   Object   args[])  
                  throws   JspException  
          {  
                  MessageResources   resources   =   retrieveMessageResources(pageContext,   bundle,   false);  
                  Locale   userLocale   =   retrieveUserLocale(pageContext,   locale);  
                  if(args   ==   null)  
                          return   resources.getMessage(userLocale,   key);  
                  else  
                          return   resources.getMessage(userLocale,   key,   args);  
          }  
  从中可看出获取的消息是由MessageResources对象从资源文件中对应的key值及相应的替换信息共同组成的.  
  所以如果使用struts的错误处理,ActionMessage或ActionError构造函数中的key值是必须的....  
  如果你想所有的错误信息对应同一个键值,却拥有不同的错误显示内容,可以这样  
  首先在资源文件中配置“message.common={0}”  
   
  然后在Action类中使用ActionErrors或ActionMessages时,方法如下:  
   
  …  
   
  ActionMessages   ams   =   new   ActionMessages();   //例外处理  
   
  Try{  
   
  …  
   
  }  
   
  catch   (Exception   ex)   {  
   
          ex.printStackTrace();  
   
          ams.add(ActionMessages.GLOBAL_MESSAGE,  
   
                                    new   ActionMessage("message.common",   ex.getMessage()));  
   
  }  
   
                          finally   {  
   
  if   (!ams.isEmpty())   {  
   
                        saveMessages(request,   ams);  
   
            }  
   
  }  
   
  …  
   
                在jsp页面中使用方法如下:  
   
                <html:messages   id="msg"   message="true">  
   
                              <font   color="red"><bean:write   name="msg"/></font>  
   
                </html:messages>  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值