Chinaunix首页 | 论坛 | 博客
  • 博客访问: 557478
  • 博文数量: 48
  • 博客积分: 4026
  • 博客等级: 上校
  • 技术积分: 622
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-26 13:59
文章分类

全部博文(48)

文章存档

2011年(3)

2010年(6)

2009年(12)

2008年(27)

我的朋友

分类: Java

2008-04-23 22:17:13

 

struts的action中使用ActionForward来转发,redirect  

在做struts时,使用struts的forward来转交页面.一般这样配置.

有时候想用redirect也比较麻烦,因为struts里没有标签.
难道要用一个中转的jsp页面使用来转接.我决不!
struts里使用ActionForward来forward,应该可以重载或者它里面有什么方法可以实现这个功能的。
于是struts1.2.7诞生了ActionRedirect子类.
API 是这么调用的.

ActionRedirect redirect = new ActionRedirect(mapping.findForward("doRedirect"));
redirect.addParameter(
"param1","value1");
redirect.addParameter(
"param2","2");
redirect.addParameter(
"param3","3.0");
return redirect;

看ActionRedirect的源码,很简单的,只是调用了一个构造函数来初始化它的ForwardConfig的实例变量.
如果我们单纯使用ActionForword的setRedirect(true);来设置forward,是会抛出例外的.
IllegalStateException("Configuration is frozen");

看ActionRedirect的源代码吧,不想多说了.
//生成这个forward时,configured属性已经被设置为true了,所以只能新建一个forward,configured默认才为false
//怎么生成forward的,以后找.

问题是redirect会把request里的东东都清空了.

private ActionForward addFrns(SourcingAchatListForm form, HttpServletRequest request, ActionMapping mapping, HttpServletResponse response,
            String userIdSelected, String artCodeStr, boolean isPalette) {
        Integer codeFrns = Integer.parseInt(request.getParameter("codeFrns"));
        Integer codeArt = Integer.parseInt(request.getParameter("codeArt"));
        fam.safeCreateFournisseurArticle(codeArt,codeFrns);
       
        ActionRedirect redirect = new ActionRedirect(mapping.findForward("self"));
        redirect.addParameter("waction", "actualiser");
        redirect.addParameter("pageNumber", request.getParameter("pageNumber"));
        redirect.addParameter("wareHousepageNum", request.getParameter("wareHousepageNum"));
        return redirect;
    }

* @struts.action-forward name="self" path="/sourcingAchatList.do"

阅读(5477) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~