struts的action中使用ActionForward来转发,redirect
在做struts时,使用struts的forward来转交页面.一般这样配置.
<forward name="success" path="/listNews.do" />
有时候想用redirect也比较麻烦,因为struts里没有<redirect>标签.
难道要用一个中转的jsp页面使用<logic:redirect page=""/>来转接.我决不!
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"