用ActionRedirect 在 struts action 中重定向url

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"

你可能感兴趣的:(J2EE)