我正在开发一个应用程序,我必须根据用户输入显示来自数据库的数据(比如说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输入丢失了。我试着阅读一些关于此的帖子但是无法理解。请帮忙。如果这是一个重复的问题,我很抱歉。
答案 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示例的更多信息,请参阅此post或JSF 2 Flash documentation