1. 程式人生 > >在Struts開發中,給ActionForward動態新增引數

在Struts開發中,給ActionForward動態新增引數

ActionForward是Struts框架的Action中使用的一個物件。它指向一個具體的path。但是這個path一般是寫死在struts-config.xml中的,那麼怎麼給ActionForward物件動態新增引數呢?

這裡總結了幾種方法。

1. 最直接的方式:使用request或者session傳遞。

request.setAttribute()

request.getSession.setAttribute()

例:

request.setAttribute(name, value);
return mapping.findForward("success");

2. 直接使用ActionForward構建一個新的包含引數的path。

例:

String userId = request.getParameter("user_Id");
ActionForward af = new ActionForward("/xxx/xxx/xxx.do?userId=" + userId);
return af;

3. 先使用mapping.findForward()的方式獲得ActionForward物件後, 然後構建一個新的ActionForwad物件並新增引數

例:

String userId = request.getParameter("user_Id"); ActionForward af = mapping.findForward("edit");
ActionForward af2 = new ActionForward(af.getPath + "?userId=" + userId);
return af;

當然,這只是一個簡單的例子來說明如何新增引數的,真正使用的時候,name為edit的path可能本身已經包含?了。這個時候就要先判斷是否含有?,如果有的話,就直接在後面新增"&userId=xx",如果沒有的話,就如例子中所示,直接新增。

總結:

以上三種方式,建議使用第一種。不建議使用第二種。

因為我們之所以使用struts-config.xml檔案來配置相關的url,就是不想把這個東東硬編碼到class檔案中,因為在開發過程中,處於一些模組化的考慮,url還是比較容易變化的。第二種就是一種惡劣的使用方式。第三種方式也還可以使用。