使用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" />

 

你可能感兴趣的:(struts2,message,chain,actionMessage)