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

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

 

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">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代码  

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

时间: 2025-01-20 17:39:39

使用chain方式,在第二action中获取第一个action中actionMessage的相关文章

android-安卓中,在一个activity中获取另一个activity中的EditText的值

问题描述 安卓中,在一个activity中获取另一个activity中的EditText的值 在一个activity中获取另一个activity中的EditText的值,两个activity之间没有跳转,有什么方法能做到吗?各位前辈帮帮忙,谢谢. 解决方案 intent传值,Intent putExtra(String name float value) 解决方案二: 安卓中从一个Activity启动另一个Activity开启另一个Activity启动另一个Activity 解决方案三: 使用S

java中获取另一个线程中的信息

在进行多线程编程中,比较重要也是比较困难的一个操作就是如何获取线程中的信息.大多数人会采取比较常见的一种方法就是将线程中要返回的结果存储在一个字段中,然后再提供一个获取方法将这个字段的内容返回给该方法的调用者.如以下的ReturnThreadInfo类: package threadtest1; public class ReturnThreadInfo extends Thread { private String str; public ReturnThreadInfo() { this.s

我在C#后台中获取了数据库表中我需要的字段的值(是以string的类型取出来的),然后我已经将这些值进行了操作,得到了新的数据(string类型)将得到的新数据

问题描述 我在C#后台中获取了数据库表中我需要的字段的值(是以string的类型取出来的),然后我已经将这些值进行了操作,得到了新的数据(string类型)将得到的新数据插入到数据库中怎么做(要用存储过程做),求大神指教,最好能给我点代码参考. 解决方案 解决方案二:...数据库基础insert和update解决方案三:不就是普通的插入更新操作吗,msdn上都有示例代码解决方案四:参考实例:intid=0;//使用存储过程实现添加数据//proc_AddUser为存储过程名称using(SqlC

sql server 获取每一个类别中值最大的一条数据

原文:sql server 获取每一个类别中值最大的一条数据 /* 数据如下: name val memo a 2 a2(a的第二个值) a 1 a1--a的第一个值 a 3 a3:a的第三个值 b 1 b1--b的第一个值 b 3 b3:b的第三个值 b 2 b2b2b2b2 b 4 b4b4 b 5 b5b5b5b5b5 */ --创建表并插入数据: create table tb(name varchar(10),val int,memo varchar(20)) insert into

action 没有跳转-Action中调用另一个类中的方法时没有跳转,但是新建的其他测试类就可以跳转,WHY?

问题描述 Action中调用另一个类中的方法时没有跳转,但是新建的其他测试类就可以跳转,WHY? action中调用EmailUtil中的sendHtmlMail方法: public void forgetPassword() throws Exception { String email = request.getParameter("email"); User u=userService.getByEmail(email); Json json=new Json(); if (St

多线程-c#如何在子线程中获取form主线程中按钮点击事件

问题描述 c#如何在子线程中获取form主线程中按钮点击事件 如何在子线程中获取form主线程中按钮点击事件,子线程B中定义了一个新类classnew,获取点击事件也是在新类classnew中,并且获取完点击事件以后执行此类中下边的任务. 解决方案 你可以主线程中得到点击事件后,发送一个Event事件通知等告诉子线程,然后子线程就可以进行后面的任务处理 解决方案二: 不知道你说的获取事件是什么意思,是事件挂钩还是获得挂钩的事件处理函数的委托.请你说清楚. 解决方案三: 主线程中得到点击事件后,发

ios-急急急!!!!iOS如何在程序中获取到手机日历中的日程关键字信息,求大神解救

问题描述 急急急!!!!iOS如何在程序中获取到手机日历中的日程关键字信息,求大神解救 急急急!!!!iOS如何在程序中获取到手机日历中的日程关键字信息,求大神解救 急急急!!!!iOS如何在程序中获取到手机日历中的日程关键字信息,求大神解救 解决方案 http://download.csdn.net/download/rlk5h/8376341

c#-获取另一个程序中第一个textbox的值怎么做?

问题描述 获取另一个程序中第一个textbox的值怎么做? 另一个程序(也是c#程序)叫abc.exe,我想获取他的其中一个textbox的值,怎么做呢?帮忙写段代码吧 解决方案 http://bbs.csdn.net/topics/390544950 解决方案二: SendMessage(hwnd, WM_GETTEXT, 100000, ptr); 发送消息来获取 解决方案三: $('#id').text() 解决方案四: 1.用 HWND WINAPI FindWindow( _In_op

android-Android中怎么把一个方法中的值传递到另一个方法中

问题描述 Android中怎么把一个方法中的值传递到另一个方法中 如下 public final Handler viewHandler = new Handler() {...........................};假设这里面有一个值要传递到 public void initViews() { .'''''''''''}:这里面 请大神指教 解决方案 为你想传入的那个方法添加传入数据类型的参数,然后在后一个方法中处理传入的数据,调用此方法的时候就可以传值了 public void