为什么采用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提供了一系列的验证拦截器,如`validation`和`workflow`拦截器,它们可以在执行Action之前自动进行字段验证,并自动将验证结果转化为ActionError或ActionMessage。 - 配置验证拦截器: ```xml <action ...
在Struts2中,`ActionError`和`ActionMessage`是两个重要的概念,它们用于处理用户界面与控制器之间的错误信息和成功消息传递。这两个类是Struts2提供的一种灵活的方式来管理验证失败或操作成功时的反馈信息。 **...
6. **异常处理**:Struts的异常处理机制可以帮助开发者优雅地管理程序中的错误和异常,书中会讨论如何配置和使用ActionError和ActionMessage。 7. ** strutstiles 插件**:Struts Tiles是一个强大的布局和页面组装...
Struts是Java Web开发中的一个经典MVC框架,它为构建可维护的、结构清晰的Web应用程序提供了强大的支持。在Struts的高级部分,我们主要关注三个方面:常用Action、验证框架以及动态Form。 **一、常用Action** 1. *...
在Struts中,Action类充当控制器角色,每个Action对应一个用户操作。 **Action类与ActionForm** - **Action类**:是处理用户请求的核心,通过实现Action接口或继承自ActionSupport基类。Action类中的execute方法...
通过这个例子,我们可以理解Struts中Form验证和Action验证的协同工作方式,以及它们在实际应用中的重要性。这两个层次的验证为应用程序提供了强大的输入数据管理和错误处理能力,有助于提高用户体验和系统安全性。
例如,如果用户没有输入第二个数字,可以通过`errors.add()`方法将错误信息添加到`ActionErrors`中。 在Action中,你可以使用如下的代码来添加错误信息: ```java ActionErrors errors = new ActionErrors(); if ...
本文将详细讨论如何在Struts中使用ActionForm的`validate`方法进行数据验证。 `validate`方法是在ActionForm中定义的一个可选方法,用于在提交表单数据后验证用户输入的有效性。这个方法通常会在调用Action的`...
当在Action中使用`addActionMessage()`添加消息后,`<s:actionmessage />`会把这些信息展示在页面上。 5. `<s:append>`:此标签用于迭代器的辅助,可以合并多个迭代器中的内容。在示例中,`<s:append>`接受多个`s:...
在这个步骤中,Action 的 execute() 方法返回一个 ActionForward 对象,然后 ActionServlet 再把请求转发给对象指定的 JSP 组件。 7. ActionForward 对象指向 JSP 组件生成动态页面返回给客户端。 在这个步骤中,...
转换成对应的FormBean实例,并填充其属性。 2. 在FormBean中,会调用reset方法,将FormBean的属性...此外,Struts还支持在Action和FormBean中使用资源束中的消息,使得应用程序能够动态 地适应不同语言环境的用户需求。
- **使用 chain 方式,在第二个 action 中获取第一个 action 中的 actionMessage**:Struts2 框架中的 chain 配置允许在多个 action 间传递数据。这部分讲解了如何利用 chain 配置来实现跨 action 的数据共享。 - **...
除了在特定Action配置中定义转发和重定向,我们还可以在struts-config.xml的全局部分定义,这样可以在多个Action中复用: ```xml ``` 5. 模型驱动(ModelDriven)与值栈(ValueStack) Struts1.3支持...
1、struts国际化的配置 * 在struts-config.xml文件中加入: 2、提供不同版本的国际化资源文件,中文需要采用native2ascii转换成unicode 3、在jsp中采用标签来读取国际化消息文本 4、了解利用struts默认将locale...
在Java Web开发过程中,尤其是使用Struts框架时,经常会遇到中文乱码的问题。本文将详细介绍在J2EE环境下,利用Struts框架解决中文乱码问题的四种实用方法。 #### 方法一:通过添加过滤器解决乱码 **原理介绍**:...
Struts2是一个流行的Java Web框架,用于构建Web应用程序。它基于MVC(模型-视图-控制器)...在实际开发过程中,开发者需要仔细阅读Struts2官方文档来获取每一个标签的详细说明和属性配置,以便在不同的场景下灵活运用。
2. **ActionForm创建与数据绑定**:如果找不到对应的ActionForm实例,框架会创建一个新的ActionForm对象。ActionForm是用于存储用户输入数据的模型对象,它会将客户端提交的表单数据保存到自身属性中。 3. **表单...
- 在 `Action` 类中使用 `ActionMessage` 类引用这些配置项。 - 通过 `{0}` 等占位符传递参数值。 #### 四、Struts工作流程 - **请求处理**: 用户发起 HTTP 请求至服务器。 - **分发请求**: Struts 的控制器(`...
不使用单向一对多、灵活使用单向一对多关联、不用一对一,用多对一取代、配置对象缓存,不使用集合缓存、一对多集合使用 Bag,多对多集合使用 Set、继承类使用显式多态、表字段要少,表关联不要怕多,有二级缓存撑腰...