差异请求范围和request.getParameter?

时间:2012-04-10 06:24:23

标签: jsf

我想知道何时将代码放在我的JSF中。

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

我的流程就像One.jsf - &gt;点击名为支持Bean的链接 - &gt;从支持bean导航到Two.jsf

我在One.jsf的请求范围中设置了patientID。我可以在支持bean上访问它。

现在使用

在two.jsf上
<%=request.getParameter("patientId") %>

我可以使用

访问我的值ID
<h:inputHidden id="patientId" value="#{requestScope['patientId']}"/>

我无法访问我的value-id。即使在html页面源代码中也没有显示出价值.... ??

为什么会这样?

1 个答案:

答案 0 :(得分:3)

从Request对象中,您可以获得两个请求参数(在GET请求中传递给URL的参数)和请求属性(请求属性是存储在请求对象中的值,并在请求完成之前一直存在)。

#{requestScope['patientId]}'

对应于request.get / setAttribute(...)

#{param['patiendId']}

对应于request.getParameter()(参数是只读的,不能设置)。

在您的情况下,您可以访问托管bean中的值,因为它存储在调用托管bean的同一请求中。当请求完成并打开新页面时,您将无法再访问此值,因为它与之前的请求相关联。