在JSF页面之间传递信息

时间:2016-12-27 11:08:09

标签: java jsf primefaces

我正在开发一个应用程序,我必须根据用户输入显示来自数据库的数据(比如说empid为employee id,我根据这个输入从数据库中显示一些信息)。我正在使用JSF,PrimeFace和Hibernate。

现在我有index.xhtml页面,我正在输入empid。之后,我必须重定向到另一个页面page2.xhtml。

以下是index.xhtml的摘录:

     <h:form>
        <p>Employee ID:
            <p:inputText value="#{userBean.newuser.empid}" required="true"/></p>
     </h:form>
     <br />
     <h:form>
         <p:commandButton action="page2?faces-redirect=true" value="Enter" />      
     </h:form>  

但是在重定向到page2.xhtml之后,index.xhtml页面的empid输入丢失了。我试着阅读一些关于此的帖子但是无法理解。请帮忙。如果这是一个重复的问题,我很抱歉。

1 个答案:

答案 0 :(得分:0)

我认为您感兴趣的托管bean的观察范围是@RequestScope?您可以为托管bean指定更宽的视图范围,因此在每次请求后都不会销毁它。但是,当想要最小化会话范围膨胀时,@RequestScope非常好。要继续使用此会话范围,您可以使用随JSF 2.0引入的 flash 对象。由于此对象,您可以在请求之间传输数据。您可以输入以下代码段:

ExternalContext.getFlash().put("empid", newuser.getEmpid);

userBean中。重定向后,您可以通过以下方式在jsf页面上检索该值:

#{flash.empid}

或者在您的托管bean中:

ExternalContext.getFlash().get("empid");

有关Flash示例的更多信息,请参阅此postJSF 2 Flash documentation