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

阅读更多

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

 

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

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

struts.xml中配置如下:

Xml代码   收藏代码
  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">getvalue2param>  
  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.jspresult>  
  15.         action>  
  16.     package>  
  17.   
  18. struts>  

 

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

第一个action部分代码如下:

Java代码   收藏代码
  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中 添加:

你可能感兴趣的:(struts)