2010-07-06 27 views
0

我想在從action方法轉發到另一個action之前添加一個URL參數。儘管HttpServletRequest有一個getParameter()方法,但它沒有setParameter()方法。我知道setAttribute()在那裏,但我需要它成爲URL的一部分(比如?something = & some2 = some2)。我知道我可以使用過濾器來完成,但這對於這項任務來說太過矯枉過正。在struts中的action方法中設置url參數

基本上我們有一個外部管理的過濾器,當設置參數時,它會改變頁面上的內容。假設頁面的顏色將作爲URL參數的一部分傳遞。當這個參數出現時,一個servlet過濾器會選擇它並改變該頁面的顏色。我知道這是一種非常奇怪的做法,但這就是他們如何在這裏建立起來的。

我知道如何使用基於java腳本的表單提交,通過將URL參數添加到動作url(即「/someAction.do?color=red」)來工作。但是對於一些動作,它實際上在代碼中執行了一個action.forward(「action_name」)。對於那些我想知道該怎麼做的人。

有誰知道如何在struts 1.2中做到這一點?

回答

5

簡而言之,這是不可能的。請求參數應該來自HTTP請求。您可以使用ServletFilterHttpServletRequestWrapper的組合來僞造它們,但這不在Struts中。根據你想要完成的事情,可能會有更好的解決方案。想多描述一下?

更新

有了你已經添加了額外的細節,我想你可以試試這個,看看它是否符合你的需求:

import org.apache.struts.action.ActionRedirect; 
... 
ActionForward forward = action.forward("action_name"); 
ActionRedirect redirect = new ActionRedirect(forward); 
redirect.addParameter("color", "red"); 
return redirect; 
+0

是的,我知道我可以使用過濾器做有用但是這僅僅設置URL參數的工作太多了。 – CoolBeans 2010-07-06 18:59:19

+0

爲什麼你不能在請求對象上使用setAttribute? – laz 2010-07-06 22:02:47

+0

因爲更改頁面顏色的過濾器需要它作爲請求參數。我已經想了很多,我沒有看到如何解決這個問題,沒有通過Java腳本添加url參數。 – CoolBeans 2010-07-07 03:52:38

2

我知道這是一個古老並接受交,但如果你不能升級的支柱(像我一樣),那麼這可能是http://www.coderanch.com/t/45890/Struts/Adding-parameters-struts-action

import org.apache.struts.action.ActionForward; 
public class ParameterizedForward extends ActionForward 
{ 
    public ParameterizedForward(ActionForward forward) 
    { 
     super(forward.getPath(), forward.getRedirect()); 
    } 
    public void addParameter(String key, String value) 
    { 
     StringBuffer sb = new StringBuffer(getPath()); 
     if (key == null || key.length() < 1) 
      return; 
     if (getPath().indexOf('?') == -1) 
      sb.append('?'); 
     else 
      sb.append('&'); 
     sb.append(key + "=" + value); 
     setPath(sb.toString()); 
    } 
} 

ParameterizedForward fwd = new ParameterizedForward(mapping.findForward("success")); 
fwd.addParameter("name","jason"); 
fwd.addParameter("userLevel", "god"); 
return fwd; 
+0

Upvoted,謝謝! – CoolBeans 2015-02-26 20:36:27

相關問題