2012-04-10 38 views
0

我想知道,當我把下面的代碼放在我的JSF中。差異requestScope和request.getParameter?

<h:inputHidden id="patientId" value="#{requestScope['patientId']}"/> 
<%=request.getParameter("patientId") %> 

我流就像One.jsf - >在點擊鏈接稱爲支持Bean - >從後臺bean導航到Two.jsf

我在One.jsf請求範圍設置patientID。我可以在支持bean上訪問它。

現在使用

<%=request.getParameter("patientId") %> 

我可以訪問我的價值的ID,但使用

<h:inputHidden id="patientId" value="#{requestScope['patientId']}"/> 

我無法訪問我的價值-ID two.jsf。即使在HTML頁面源碼不顯示我的價值.... ??

這是爲什麼?

回答

3

從請求對象,你可以得到這兩個請求參數(傳遞到URL中的GET請求的參數),並請求屬性(請求屬性會被存儲在請求對象的值,直到請求完成住在那裏)。

#{requestScope['patientId]}' 

對應於request.GET中/的setAttribute(...)

#{param['patiendId']} 

對應的request.getParameter()(參數是隻讀,並且不能被設置)。

在你的情況,你可以在你的託管bean訪問的價值,因爲它存儲在管理bean調用了同樣的要求。當請求完成並打開一個新頁面時,您將無法再訪問此值,因爲它與前一個請求相關聯。