使用chain方式,在第二action中获取第一个action中actionMessage
为什么采用chain 方式时,没有复制Errors, Field errors and Message?
struts.xml中配置如下:
<struts> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="getvalue" class="example.GetValueAction"> <result type="chain"> <param name="actionName">getvalue2</param> <param name="namespace">/</param> </result> </action> </package> <package name="222" namespace="/" extends="struts-default"> <action name="getvalue2" class="example.GetValue2Action"> <result>/result.jsp</result> </action> </package> </struts>
第一个action(getvalue) 通过chain的方式把请求传递到第二个action(getvalue2),可是在第二个action无法获取第一个action中设置的actionMessage,当然在result.jsp中使用 <s:actionmessage/>也无法获取正确的值。
第一个action部分代码如下:
public class GetValueAction extends ActionSupport { private static final long serialVersionUID = 4865100826143278474L; @Override public String execute() throws Exception { String actionMessage="aaa";//你自己需要设置的message addActionMessage(actionMessage); return super.execute(); } }
原因分析:
采用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" />
上一篇: 通过百度API获取经纬度
下一篇: freemarker 宏定义相关