可能大家都知道在webwork里面如果想重定向到另外一个页面主要有两种方法,一种就是使用可以保留Request上下文的Chain result type,一种是不保留Request上下文的Redirect result type。这两种Redirect类型都是webwork提供默认支持的。其中redirect又有两种类型,redirect和redirect-action。我在这里主要想说一下这两种redirect type的差别。
关于redirect-action的说明可以再opensymphony的webwork wiki上找到
http://www.opensymphony.com/webwork/wikidocs/Redirect%20Action%20Result.html。里面有提到说如果想要让浏览器重定向到一个URL上去调用一个特定的action最好使用redirect-action。原因是使用redirect-action的时候你不用自己去对URL进行encode。在使用redirect的时候,对于url的编写需要符合xml规范,比如&需要使用&来代替等等,一不小心就会忘记掉。在使用redirect-action之后,url的编码工作由webwork帮助你完成,你要做的就是用<param></param>写一些参数进去。
比如,你的result可能这样写:
<result name="OK" type="redirect-action">
<param name="actionName">test</param>
<param name="method">test</param>
<param name="namespace">xxx</param>
<param name="field1">${field1}</param>
<param name="field2">${field2}</param>
</result>
这样的话,webwork就会帮你生成一个url,大概是这个样子的:
http://mysun.javaeve.com/[color=red]ApplicationContext[/color]/[color=olive]namespace[/color]/test!test.do
这里有几个地方需要说明:
[1]ApplicationContext:这个应用上下文是你给你web应用选择的访问起始点。例如在jboss当中就是在application.xml中用<context-root>标签设定的那个值。
[2]namespace:这个namespace跟webwork配置文件中<package>标签中的namespace属性意义相同。也就是说,如果你在跳转之前的url为http://mysun.iteye.com/test/test.do并且你在你的关于test这个action的配置文件当中的规定了namespace为test,那么如果你在resul里面用了<param name="namespace">xxx</param>,那么经过转换之后的url就变成了http://mysun.iteye.com/test/xxx/test.do。
说到这里,需要说明一下redirect-action的一个限制,就是你无法改变你当前的namespace。也就是说,如果你在提交时候的使用了test这个namespace,那么使用redirect-action定义的url始终会在test这个namespace下面。如果你想要改变这个namespace,那就使用redirect吧,直接写url。
还有一点要说一下,就是${field1}这个参数的赋值问题。field1的赋值是使用webwork的ONGL实现的。当webwork看到result里面有这个${field1}类型的参数的时候,就会从webwork的value stack中找field1这个属性,然后把field1这个属性的值赋值给${field1},最后再拼装成url。如果没有找到对应的值,那么在url里面这个field1的值就为空,看起来会是这样的
field1=&field2=。
分享到:
相关推荐
本文详细介绍了WebWork框架中`WebWork_Result`配置文件的使用方法,重点讲解了`dispatcher`和`redirect`两种类型的`result`配置及其区别。通过这些知识点的学习,可以帮助开发者更好地掌握WebWork框架的核心机制,...
总结来说,WebWork 配置涉及Action的创建、ActionContext的理解和使用、ServletDispatcher的调度机制,以及Action的测试和Result Type的设置。熟练掌握这些知识点,能够帮助开发者高效地构建和维护基于WebWork的Java...
- 可选的结果类型还包括`redirect`(浏览器重定向)、`chain`(链式Action处理)、`velocity`(Velocity模板渲染)和`xslt`(XSLT转换)等,提供了灵活的视图控制方式。 5. **工作原理**: - 当用户发送一个请求...
WebWork支持多种Result Type,如Redirect、Stream、JSP、FreeMarker等,允许开发者灵活控制页面跳转和数据展示方式。 8. **Interceptors(拦截器)**:WebWork的拦截器机制允许在Action执行前后插入额外的逻辑,...
8. **结果类型(Result Types)**:WebWork允许定义多种结果类型,如Redirect、Stream、Freemarker等,来决定Action执行后如何呈现结果。这使得开发者可以灵活地控制视图的展现方式。 9. **国际化(i18n)**:...
根据提供的文件信息,我们可以提取并总结出关于《WebWork In Action》这本书的关键知识点。这些知识点主要围绕WebWork框架的核心概念、实现方式以及高级主题展开。 ### WebWork框架概述 **WebWork**是一款开源的...
- `<result>`: 定义Action执行后的结果类型。 - `<interceptor>`: 定义拦截器。 #### 十一、实战G-Roller-WW - **项目简介**: G-Roller-WW是一个实际项目案例,展示了WebWork与其他技术(如Spring、Hibernate)...
5. **结果类型(Result Type)**: WebWork允许定义多种结果类型,如Redirect、Stream等,控制动作执行后的页面跳转或数据流输出。在`webwork-example`中,你可能看到不同结果类型的实例。 6. **表单和数据绑定**...
WebWork是一个早期的MVC框架,它的许多设计理念和特性被集成到了Struts 2中,使得Struts 2具备了强大的动作(Action)管理、拦截器(Interceptor)机制和强大的结果映射(Result)功能。 1. **动作(Action)**:在...
<result name="error" type="redirect">/error.jsp</result> <result name="input" type="dispatcher">/name.jsp</result> </action> ``` 在这个例子中,“login”是动作的名称,“com.action.Search”是指向实现...
<result name="cancel" type="redirect-action">Welcome</result> <result type="redirect-action">MainMenu</result> <result name="expired" type="chain">ChangePassword</result> </action> <!-- ...其他...
Struts 2.1还支持多种结果类型(Result Types),如dispatcher(用于转发到JSP页面)、stream(用于处理大文件下载)和redirect(用于重定向)。此外,它还提供了丰富的插件体系,可以轻松集成其他框架如Spring、...
<result name="cancel" type="redirect-action">Welcome</result> <result type="redirect-action">MainMenu</result> <!-- ... --> </action> ``` `struts.properties`文件则用于配置Struts2的全局属性,如...
首先,Struts 2的核心特性之一是Action类,它是处理用户请求的中心组件。在Struts 2.1.8中,Action类支持注解,这使得配置文件更加简洁,代码更易于理解和维护。开发者可以使用注解来指定Action的执行方法、结果映射...
Action代表业务逻辑,Result负责视图渲染,Interceptor处理请求和响应之间的拦截操作,ValueStack则是用于存储Action上下文中的数据。 2. **Action和ActionMapping** - Action是业务逻辑的载体,一个Action类对应...
- `chain`:调用另一个 Action,并可以传递参数,例如 `<result type="chain">login_add?uid=${uid}</result>`。 - **字符编码问题**:处理中文时需要注意编码问题,例如对 URL 参数进行编码: - 发送请求时需要...
5. **结果类型(Result Types)**:Struts2支持多种结果类型,如dispatcher(用于转发到JSP页面)、stream(用于下载文件)和redirect(用于重定向URL)。 6. **插件架构**:Struts2的插件架构使得扩展和集成其他...
<result name="login" type="redirect">login!default.action</result> <result name="unauthorized">unauthorized.jsp</result> </global-results> <action name="login" class=...
- 结果类型定义了Action执行后如何展示结果,如`dispatcher`(转发到JSP页面)、`redirect`(重定向到新的URL)、`stream`(处理流媒体)等。 8. **模型驱动(ModelDriven)和插件支持** - Struts2支持模型驱动...
<result name="success" type="redirect">/example/success.jsp</result> </global-results> <action name="hello" class="com.example.struts.action.HelloWorldAction"> </action> <action name="test_*" ...