论坛首页 Java企业应用论坛

Webwork如何处理复杂的跳转

浏览 13445 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-06-26  
OneEyeWolf 写道
我的项目中很多都是这样子的,我觉得这样的需求,也很正常,我初转Webwork,并不是说webwork不好,只是现在想尽快的进入角色,使用webwork来解决项目中的实际问题,而不是写一些HelloWord之类的东东。所以那些Webwork的Fans不要太在意。


这样的需求确实也很正常,webwork都可以用很漂亮而且简单的方式搞定(比Struts/SpringMVC要简单的多)。问题只是你错误的估计了webwork的学习曲线。
0 请登录后投票
   发表时间:2006-06-26  
zkj_beyond 写道
呵,我知道你的这个需求。和这个论坛回复后跳到原来的页面。


http://forum.iteye.com/login.php?redirect=posting.php&mode=reply&t=21000

我的建议是专门写个servlet,让本action用chain类型,到这个servlet,servlet转发或跳转。

我就是这么做的,毕竟这个需求比较单一,写个servlet很好处理的。

赞,好注意
0 请登录后投票
   发表时间:2006-06-26  
……
我觉得可以自定义个dispatcher。
然后在xwork.xml里将这个dispatcher注册到result map里。
webwork也提供dispatcher的。
不过大多数常用的都已经在webwork-default.xml里注册了。

嗯,试了一下,可以地。

dispatcher
package cn.mudfans.dwangel.webwork.util;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.opensymphony.webwork.ServletActionContext;
import com.opensymphony.webwork.dispatcher.WebWorkResultSupport;
import com.opensymphony.xwork.ActionContext;
import com.opensymphony.xwork.ActionInvocation;

public class RedirectUrl extends WebWorkResultSupport {

	protected void doExecute(String finalLocation, ActionInvocation invocation);
			throws Exception {
		ActionContext ctx = invocation.getInvocationContext();;
        HttpServletRequest request = (HttpServletRequest); ctx.get(ServletActionContext.HTTP_REQUEST);;
        HttpServletResponse response = (HttpServletResponse); ctx.get(ServletActionContext.HTTP_RESPONSE);;
        String target = request.getParameter(finalLocation);;
        response.sendRedirect(target);;
	}

}


test action
package cn.mudfans.dwangel.webwork.util;
import com.opensymphony.xwork.ActionSupport;

public class TestRedirectAction extends ActionSupport {

	public String execute(); throws Exception {
		// TODO Auto-generated method stub
		return "redirect-url";
	}
}


xwork.xml里把 result type 仿照http://wiki.opensymphony.com/display/WW/webwork-default.xml
重新声明一下,插入 <result-type name="redirect-url" class="cn.mudfans.dwangel.util.RedirectUrl"/>

action 声明
<action name="testUrl" class="cn.mudfans.dwangel.webwork.util.TestRedirectAction">
			<result name="redirect-url" type="redirect-url">target</result>
		</action>

result标签里的参数是用来说明 什么 是参数名。
比如使用就是
http://localhost:8080/app/testUrl.action?target=http://www.google.com

:evil:
webwork的灵活 ……
0 请登录后投票
   发表时间:2006-06-26  
刚才那个是通用的功能,所以写一个专门类来处理,楼主的方法,挺好的,没有什么可说的。但对于特殊的,是不是每个都要搞一个这样类似的东东来做。
   还有一个问题,请问跳转前,需要将Service数据放入Request中,该如何处理?不能用这种方法了吧。
0 请登录后投票
   发表时间:2006-06-26  
OneEyeWolf 写道
刚才那个是通用的功能,所以写一个专门类来处理,楼主的方法,挺好的,没有什么可说的。但对于特殊的,是不是每个都要搞一个这样类似的东东来做。
   还有一个问题,请问跳转前,需要将Service数据放入Request中,该如何处理?不能用这种方法了吧。

……
我只是仿照Webwork现有的Dispatcher做的。
所谓特殊,应该是跟Action有关系吧,因为可以在Dispatcher里得到被调用的Action,定义好一个编程规则,或者接口……

如果要把Service 放入Request的话,应该是类似Chain的Result type影射。
把那个类改改……

另外,Webwork还有个ActionMapper的概念,可以自己写个ActionMapperFactory来处理一些定向工作的。
Webwork是一个扩展性框架,如果你觉得有需要加的功能,完全可以自行添加。
这是我喜欢的。 
0 请登录后投票
   发表时间:2006-06-26  
&lt;result type="redirect"&gt;XXXX.action?paramName=${paramValue}&lt;/result&gt;

&lt;result type="redirect"&gt;${returnURL}&lt;/result&gt;
0 请登录后投票
   发表时间:2006-06-27  
似有所悟,谢谢各位。不过说实在话,Webwork的资料太少了,对于webwork in action 的文档一晚上就看完了,要想解决问题和灵活运用,还得自己花很多时间来解决。希望能有一些Best Practice出来,这样可以让学习曲线平缓一些。
0 请登录后投票
   发表时间:2006-06-27  
OneEyeWolf 写道
似有所悟,谢谢各位。不过说实在话,Webwork的资料太少了,对于webwork in action 的文档一晚上就看完了,要想解决问题和灵活运用,还得自己花很多时间来解决。希望能有一些Best Practice出来,这样可以让学习曲线平缓一些。



webwork自己带的showcase基本上就足够了,还有飞云小侠他们翻译了webwork的wiki文档。
0 请登录后投票
   发表时间:2006-06-27  
OneEyeWolf 写道
似有所悟,谢谢各位。不过说实在话,Webwork的资料太少了,对于webwork in action 的文档一晚上就看完了,要想解决问题和灵活运用,还得自己花很多时间来解决。希望能有一些Best Practice出来,这样可以让学习曲线平缓一些。


一晚上搞定Webwork In action。挺牛啊。
学习Webwork本来曲线不高,只是你受Struts的影响太深了。扭不回来罢了。。
0 请登录后投票
   发表时间:2006-06-27  
我想我是海 写道

一晚上搞定Webwork In action。挺牛啊。
学习Webwork本来曲线不高,只是你受Struts的影响太深了。扭不回来罢了。。

indeed

我觉得好的Framework不仅仅是在上面工作,还提供方法在不更改源代码的条件下,
可以通过一些接口和配置增加自己所需要的特性.
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics