核心提示:Struts2中通过配置文件重定向后常出现参数找不到的问题,总结一下解决方法: 1. 确保Action中的需要在redirect时传递变量是基本类型(比如int、long等); 2. 确保变量都有setter getter; 3. 配置文件: redirect方式: action name = view class = myActio |
Struts2中通过配置文件重定向后常出现参数找不到的问题,总结一下解决方法:
1. 确保Action中的需要在redirect时传递变量是基本类型(比如int、long等);
2. 确保变量都有setter & getter;
3. 配置文件:
redirect方式:
<action name="view" class="myAction" method="view">
<result name="success">view.jsp</result>
</action>
<action name="save" class="myAction" method="save">
<result name="success" type="redirect">view.html?id=${id}</result>
<result name="input">input.jsp</result>
</action>
<action name="view" class="myAction" method="view">
<result name="success">view.jsp</result>
</action>
<action name="save" class="myAction" method="save">
<result name="success" type="redirect">view.html?id=${id}</result>
<result name="input">input.jsp</result>
</action>
redirect-action方式略有不同,将重定向的result改成如下格式即可:
<result name="success" type="redirect-action">
<param name="actionName">view</param>
<param name="id">${id}</param>
</result>
关于多个参数的传递,如下案例
<action name="blahblahAction" class="blahAction" method="blah">
<result name="success" type="redirect">/some.action?field1=${field1}&field2=${field2}</result>
</action>
运行时候出现如下提示:
The reference to entity "field2" must end with the ';' delimiter.
我本以为是OGNL的问题,四处搜寻,不得其解……看了DTD也没有发现问题。
后来修改过程中突然发现原来是SAX解析器出错,我这才想到可能是XML的问题。
经过再三查询得到解决方案:
使用"&"代替"&",原理和HTML中的转义相同,我居然忘记了XML的语法规范,惭愧。
配置如下:
<action name="blahblahAction" class="blahAction" method="blah">
<result name="success" type="redirect">/some.action?field1=${field1}&field2=${field2}</result>
</action>
分享到:
相关推荐
`Redirect`是`Result`类型中的一种,它涉及到Web应用程序中的URL重定向概念,对用户浏览器的历史记录、防止重复提交等问题有直接影响。 首先,让我们理解一下`Result`的基本概念。在Struts2框架中,每个动作...
在Struts2中,防止重复提交是一个重要的问题,因为它可能导致数据不一致性和服务器资源的浪费。本文将详细介绍如何在Struts2中解决这个问题,以及相关的技术概念。 首先,我们要理解Struts2中的拦截器(Interceptor...
除了直接使用redirect,还可以使用redirectAction,并在result中配置actionName参数,这样提交后会通过另一个action来执行,从而避免了直接刷新带来的重复提交问题。 在具体实现上,通过修改result元素的type属性来...
在Struts2中整合Velocity还需要配置Velocity相关的依赖,确保项目中包含Velocity Engine库,并在Struts2的配置中指定Velocity工具库: ```xml <constant name="struts.action.extension" value=".do"/> ...
在Struts2中,Action的执行结果可以被导向到不同的视图,这其中包括了"redirect"和"redirectAction"两种重定向结果类型。这两种结果类型在实际应用中有着重要的作用,特别是对于处理URL重写、防止重复提交等问题。 ...
而在Struts2中,这些职责被合并到了一起。开发者可以直接在Action中读写成员变量,不再需要专门的FormBean或LazyBean。此外,也不再需要从request中读取数据,每个函数也不再需要显式地接收Request/Response参数,这...
文件上传功能在Struts2中通过`Struts2`提供的插件来实现,主要依赖于`Apache Commons FileUpload`库。首先,要在`struts.xml`配置文件中启用文件上传支持,设置`struts.multipart.parser`为`jakarta`或`native2...
2. **路由决策**:核心控制器`FilterDispatcher`根据URL中的Action名和配置文件(struts.xml)中的定义来确定应调用哪个Action。 3. **执行拦截器链**:在调用具体的Action之前,会首先经过一系列的拦截器。这些拦截...
总结来说,Struts2中的重定向是一种重要的URL导航技术,可以通过多种方式实现,包括`ActionRedirect`对象、`Results`配置、`ActionSupport`的`redirect()`方法和注解方式。理解并熟练掌握这些方法,对于开发高质量的...
Struts2是Apache软件基金会的开源项目,它继承了Struts1的优点并解决了其局限性,提供了更优秀的行动控制器、拦截器机制以及强大的插件支持。Struts2的核心设计目标是简化MVC应用的开发,使开发者能够更加专注于...
- **接收请求参数**:Struts2能够自动将请求参数绑定到Action中的属性。 - **自定义类型转换器**:对于特定类型的请求参数,可以通过自定义类型转换器进行转换。 #### 八、其他功能 - **文件上传**:Struts2支持...
11.1.2 Struts 2如何解决本地Java对i18n支持的问题 243 11.2 Struts 2 i18n示例 244 11.2.1 Struts 2 i18n快速展示 244 11.2.2 幕后一览 246 11.3 Struts 2 i18n详情 247 11.3.1 Struts 2默认的TextProvider Re-...
Interceptor框架是Struts2中的一个重要组成部分,它类似于AOP(面向切面编程),可以在Action执行前后进行拦截操作。 #### 5.2 Interceptor的使用 - **配置**:在struts.xml中配置需要使用的Interceptor以及它们的...
7. **OGNL(Object-Graph Navigation Language)**:OGNL是Struts2中的表达式语言,用于在视图层获取和设置值栈中的数据,实现动态表示层的渲染。 8. **拦截器**:拦截器是Struts2的一大特色,它可以定义一系列预定...
3. `<bean>`:在Struts2中并不常用,主要用于创建和配置JavaBean。 4. `<constant>`:用于设置Struts2的全局配置属性,如`struts.devMode`,以开启或关闭开发模式。 `<package>`元素中最重要的子元素是`<action>`...
包(`package`)是Struts2中组织Action的一种方式,类似于Java中的包概念。每个包可以包含多个Action。 ```xml <package name="honghu" extends="struts-default"> ``` - **`name`**:包名,必须唯一。 - **`extends...
Struts2是一个强大的Java EE应用程序框架...通过学习这个示例,初学者可以理解如何在Struts2中组织Action、Form、Interceptor、配置文件和视图,以及如何实现CRUD操作和模糊查找功能,为后续的Web开发打下坚实的基础。
在Struts 2中,Action是业务逻辑的核心组件,通常是一个Java类。为了使Struts 2能够识别并调用Action,需要在`struts.xml`配置文件中声明Action。Action的配置包括指定Action类的完整路径,例如`class="包名+java...