【问题标题】:Passing information between JSF pages在 JSF 页面之间传递信息
【发布时间】:2016-12-30 16:53:05
【问题描述】:

我正在开发一个应用程序,我必须根据用户输入显示来自数据库的数据(假设员工 ID 的字段 empid,我根据此输入显示来自数据库的一些信息)。我正在使用 JSF、PrimeFace 和 Hibernate。

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

这是 index.xhtml 中的一个 sn-p:

     <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 丢失了。我试图阅读一些关于此的帖子,但无法理解。请帮忙。如果是重复的问题,我很抱歉。

【问题讨论】:

标签: java jsf primefaces


【解决方案1】:

我假设您感兴趣的托管 bean 的视图范围是 @RequestScope ?您可以为托管 bean 指定更广泛的视图范围,因此它不会在每次请求后被销毁。然而,@RequestScope 在想要最小化会话范围膨胀时非常好。为了保持这个会话范围,您可以使用 JSF 2.0 引入的 flash 对象。多亏了这个对象,您可以在请求之间传输数据。您可以输入以下代码 sn-p :

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

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

#{flash.empid}

或者在你的托管 bean 中:

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

更多关于 flash 的例子可以在postJSF 2 Flash documentation 中找到

【讨论】:

  • 感谢您的帮助。会试试这个。
  • ViewAccessScoped from code 非常适合。防止 'sessionBloat' 得到很好的扩展并保持你的代码简单......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-24
  • 1970-01-01
  • 2011-06-30
  • 1970-01-01
  • 2019-01-02
  • 1970-01-01
相关资源
最近更新 更多