欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

的使用chain应注意的问题(二)

程序员文章站 2022-07-12 16:14:43
...

使用chain方式,在第二action中获取第一个action中actionMessage

 

为什么采用chain 方式时,没有复制Errors, Field errors and Message?

 struts2.0这个低版本的默认会带过去

struts.xml中配置如下:

Xml代码  <s:actionmessage/>的使用chain应注意的问题(二)
            
    
    博客分类: struts struts 
  1. <struts>  
  2.     <constant name="struts.devMode" value="true" />  
  3.     <package name="default" namespace="/" extends="struts-default">  
  4.         <action name="getvalue" class="example.GetValueAction">  
  5.             <result type="chain">  
  6.                 <param name="actionName">getvalue2</param>  
  7.                 <param name="namespace">/</param>  
  8.             </result>  
  9.         </action>  
  10.   
  11.     </package>  
  12.     <package name="222" namespace="/" extends="struts-default">  
  13.         <action name="getvalue2" class="example.GetValue2Action">  
  14.             <result>/result.jsp</result>  
  15.         </action>  
  16.     </package>  
  17.   
  18. </struts>  

 

第一个action(getvalue) 通过chain的方式把请求传递到第二个action(getvalue2),可是在第二个action无法获取第一个action中设置的actionMessage,当然在result.jsp中使用 <s:actionmessage/>也无法获取正确的值。

第一个action部分代码如下:

Java代码  <s:actionmessage/>的使用chain应注意的问题(二)
            
    
    博客分类: struts struts 
  1. public class GetValueAction extends ActionSupport {  
  2.     private static final long serialVersionUID = 4865100826143278474L;  
  3.       
  4.     @Override  
  5.     public String execute() throws Exception {  
  6.         String actionMessage="aaa";//你自己需要设置的message  
  7.         addActionMessage(actionMessage);  
  8.         return super.execute();  
  9.     }  
  10.   
  11. }  

 

原因分析:

采用chain方式时,Errors, Field errors and Message 默认不会复制到第二个action,必须手动指定:

 

struts.xwork.chaining.copyErrors - 设置为true ,可以复制 Action Errors 到第二个action;

struts.xwork.chaining.copyFieldErrors - 设置为true ,可以复制 Field Errors 到第二个action;

struts.xwork.chaining.copyMessages - 设置为true ,可以复制 Action Messages到第二个action;

 

解决方法:

在struts.xml中 添加:

<constant name="struts.xwork.chaining.copyErrors" value="true" />

<constant name="struts.xwork.chaining.copyFieldErrors" value="true" />

<constant name="struts.xwork.chaining.copyMessages" value="true" />

相关标签: struts