2011-08-01 48 views
2

我有一個jsp頁面。我正在調用iframe中的jsp頁面並將新參數添加到url。在struts動作類中無法獲取請求屬性

的usrl看起來像

的http:\本地主機:8080 \ Search.pp等等= TRUE;

因此,當作爲所謂的搜索頁面已經得到了一些過濾器,這樣在操作類我有這樣

String Parameter = 
      request.getParameter(blah); 
    if (StringUtils.isNotEmpty(Parameter)) { 
     Search = Boolean.parseBoolean(campaignSearchParameter); 
    } 

代碼,然後在JSP頁面中我做類似

final Boolean Search = (Boolean) request.getAttribute("blah") == null ? false : (Boolean) request 
     .getAttribute("blah"); 
request.setAttribute("blah",Search); 

我使用這個「搜索」布爾變量來隱藏從另一頁面調用的內容。 因此,如果用戶單擊此頁面中的任何鏈接,它將再次返回到struts相同的操作類。 我的問題是,第一次一切工作正常。對於下一次我希望在struts動作中設置這個變量,但看起來像它返回null。

回答

0

只要有問題的HTTP請求存在,請求屬性就會生效。只要客戶端實際發送了它,它就會啓動,只要客戶端檢索到與HTTP請求關聯的完整HTTP響應,它就會結束。任何後續請求都是全新的請求,它根本不包含先前請求的屬性副本。

您需要將它作爲請求參數傳遞。例如,作爲其他頁面的窗體的隱藏輸入字段。

<form ...> 
    ... 
    <input type="hidden" name="blah" value="${fn:escapeXml(param.blah)}" /> 
</form> 

(JSTL的fn:escapeXml()是爲了防止您的網站XSS攻擊,同時重新顯示用戶控制輸入)