JSF将bean传递给页面

JSF将bean传递给页面,jsf,Jsf,我创建了一个小控制器,它可以根据输入将它发送到多个页面,每个页面都有不同的支持bean。我这样做是因为有一个页面(包含一个案例编号)会验证该案例编号,然后将其传递给需要有效案例编号的任意数量的页面 这是我的案例选择器页面: <h:form id="form1"> <h:inputText value="#{caseSelectorBean.caseNumber}"/> <h:inputHidden value="#{caseSelectorBean

我创建了一个小控制器,它可以根据输入将它发送到多个页面,每个页面都有不同的支持bean。我这样做是因为有一个页面(包含一个案例编号)会验证该案例编号,然后将其传递给需要有效案例编号的任意数量的页面

这是我的案例选择器页面:

<h:form id="form1">
    <h:inputText value="#{caseSelectorBean.caseNumber}"/> 
    <h:inputHidden value="#{caseSelectorBean.nextPage}"/> 
    <h:commandButton action="#{caseSelectorBean.gotoNext}" value="submit"/> 
</h:form>
问题是当我试图从下一页访问bean时,它是空的。我可以通过构造函数看到,它创建了一个新的构造函数,而不是在会话中使用该构造函数。如何使页面使用我为其创建的bean

谢谢

带有{param}的ManagedProperty仅适用于请求范围的bean。对于更广泛的范围,请使用f:viewParam:

<f:metadata>
  <f:viewParam name="caseNumber" value="#{caseSelectorBean.caseNumber}"/>
</f:metadata>
然后,您只需要在bean中使用一个简单的带有getter和setter的属性caseNumber。

您的bean的范围是什么。它应该被处理。我确实有它的要求。当我将其更改为session时,得到了javax.servlet.ServletException:无法创建托管bean caseSelectorBean。发现以下问题:-表达式{param.caseNumber}request引用的对象的作用域短于会话的引用托管bean caseSelectorBean作用域,因为我有一个托管属性caseNumber{param.caseNumber}是否有更好的方法从jsp页面传递caseNumber参数?请参阅此链接-,我认为所有这些方法都比隐藏字段更好。请注意,如果您运行的是Tomcat7或Glassfish,那么您可以将参数传递给方法,而不包括el-impl-2.2.jar
<f:metadata>
  <f:viewParam name="caseNumber" value="#{caseSelectorBean.caseNumber}"/>
</f:metadata>