可能大家都知道在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 in action_第1部分-WebWork简介_第2章-WebWork方式的Hello World
WebWork-2.1.7 中文开发文档-小白
webwork in action
webwork in action 书籍 源代码
webwork in action.(pdf &&代码)
webwork in action 第一部分:概貌 第二部分:核心内容 第三部分:内容的显示 第四部分:高级话题
Webwork in action
与下载的<<WebWork docs -- webWork 详细的说明文档>> 的文件夹合并. 这里包括了所有webWork的所有的详细说明文档, 任何有关的问题都可以在这里找到答案.
webwork in action 中文版
webwork in action 中文版
webwork-2.1.6.jar
webwork in action 中文版
webWork 详细的说明文档, 由于我的上传大小有限, 这个好东西我只能是分两次上传了, 下载的人可能要辛苦一些了, 不过这些都是值得的, 将<<WebWork docs 2 -- webWork 详细的说明文档>> 也一同下载下来, 下载后两个...
WebWork_Result的配置文件详细分解,看了这个你再也不用发愁result的事了
Webwork.in.action最新中文版
webwork-2.1.jar webwork相关jar包
webwork.in.action中文pdf版 part5
这是webwork1的jar包,还有webwork-2.2.7.jar和webwork-src-2.2.7.jar
webwork.in.action中文版 pdf版本