锁定老帖子 主题:Webwork如何处理复杂的跳转
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-06-26
OneEyeWolf 写道 我的项目中很多都是这样子的,我觉得这样的需求,也很正常,我初转Webwork,并不是说webwork不好,只是现在想尽快的进入角色,使用webwork来解决项目中的实际问题,而不是写一些HelloWord之类的东东。所以那些Webwork的Fans不要太在意。
这样的需求确实也很正常,webwork都可以用很漂亮而且简单的方式搞定(比Struts/SpringMVC要简单的多)。问题只是你错误的估计了webwork的学习曲线。 |
|
返回顶楼 | |
发表时间:2006-06-26
zkj_beyond 写道 呵,我知道你的这个需求。和这个论坛回复后跳到原来的页面。
或 http://forum.iteye.com/login.php?redirect=posting.php&mode=reply&t=21000 我的建议是专门写个servlet,让本action用chain类型,到这个servlet,servlet转发或跳转。 我就是这么做的,毕竟这个需求比较单一,写个servlet很好处理的。 赞,好注意 |
|
返回顶楼 | |
发表时间: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的灵活 …… |
|
返回顶楼 | |
发表时间:2006-06-26
刚才那个是通用的功能,所以写一个专门类来处理,楼主的方法,挺好的,没有什么可说的。但对于特殊的,是不是每个都要搞一个这样类似的东东来做。
还有一个问题,请问跳转前,需要将Service数据放入Request中,该如何处理?不能用这种方法了吧。 |
|
返回顶楼 | |
发表时间:2006-06-26
OneEyeWolf 写道 刚才那个是通用的功能,所以写一个专门类来处理,楼主的方法,挺好的,没有什么可说的。但对于特殊的,是不是每个都要搞一个这样类似的东东来做。
还有一个问题,请问跳转前,需要将Service数据放入Request中,该如何处理?不能用这种方法了吧。 …… 我只是仿照Webwork现有的Dispatcher做的。 所谓特殊,应该是跟Action有关系吧,因为可以在Dispatcher里得到被调用的Action,定义好一个编程规则,或者接口…… 如果要把Service 放入Request的话,应该是类似Chain的Result type影射。 把那个类改改…… 另外,Webwork还有个ActionMapper的概念,可以自己写个ActionMapperFactory来处理一些定向工作的。 Webwork是一个扩展性框架,如果你觉得有需要加的功能,完全可以自行添加。 这是我喜欢的。 ![]() |
|
返回顶楼 | |
发表时间:2006-06-26
<result type="redirect">XXXX.action?paramName=${paramValue}</result>
<result type="redirect">${returnURL}</result> |
|
返回顶楼 | |
发表时间:2006-06-27
似有所悟,谢谢各位。不过说实在话,Webwork的资料太少了,对于webwork in action 的文档一晚上就看完了,要想解决问题和灵活运用,还得自己花很多时间来解决。希望能有一些Best Practice出来,这样可以让学习曲线平缓一些。
|
|
返回顶楼 | |
发表时间:2006-06-27
OneEyeWolf 写道 似有所悟,谢谢各位。不过说实在话,Webwork的资料太少了,对于webwork in action 的文档一晚上就看完了,要想解决问题和灵活运用,还得自己花很多时间来解决。希望能有一些Best Practice出来,这样可以让学习曲线平缓一些。
webwork自己带的showcase基本上就足够了,还有飞云小侠他们翻译了webwork的wiki文档。 |
|
返回顶楼 | |
发表时间:2006-06-27
OneEyeWolf 写道 似有所悟,谢谢各位。不过说实在话,Webwork的资料太少了,对于webwork in action 的文档一晚上就看完了,要想解决问题和灵活运用,还得自己花很多时间来解决。希望能有一些Best Practice出来,这样可以让学习曲线平缓一些。
一晚上搞定Webwork In action。挺牛啊。 学习Webwork本来曲线不高,只是你受Struts的影响太深了。扭不回来罢了。。 |
|
返回顶楼 | |
发表时间:2006-06-27
我想我是海 写道 一晚上搞定Webwork In action。挺牛啊。 学习Webwork本来曲线不高,只是你受Struts的影响太深了。扭不回来罢了。。 indeed 我觉得好的Framework不仅仅是在上面工作,还提供方法在不更改源代码的条件下, 可以通过一些接口和配置增加自己所需要的特性. |
|
返回顶楼 | |