2016-12-27 2 views
0

私はデータベースからユーザー入力に基づいてデータを表示する必要があるアプリケーションを開発しています(従業員IDのフィールドempidとこの入力に基づいてデータベースから情報を表示します)。私はJSF、PrimeFace、およびHibernateを使用しています。JSFページ間で情報を渡す

私はempidを入力しているindex.xhtmlページを持っています。その後、別のページpage2.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の入力が失われた:ここで

はいるindex.xhtmlからの抜粋です。私はこれについていくつかの記事を読もうとしましたが、理解できませんでした。助けてください。何度も質問があれば申し訳ありません。

+0

入力フィールドとコマンドボタンの形式が異なりますか? –

+0

はい、私はそれに気付きました。私は同じ形でそれらを保ったが、それも良いことではなかった。 – rkarwayun

+0

https://stackoverflow.com/questions/31147487/jsf-passing-parameter-between-two-requestscoped-managed-beans-in-jsf-page – Kukeltje

答えて

0

あなたが興味を持っているマネージドBeanのビュースコープは@RequestScopeであると仮定しますか?マネージドBeanのワイドビュー範囲を指定できるため、リクエストごとに破棄されることはありません。しかし、@RequestScopeはセッションスコープの膨らみを最小限に抑えたいときには本当に良いです。このセッションスコープを維持するには、JSF 2.0で導入されたflashオブジェクトを使用できます。このオブジェクトのおかげで、リクエスト間でデータを転送できます。あなたのuserBean

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

:あなたは、次のコードスニペットを置くことができます。後あなたは次のようにJSFページにその値を取得することができリダイレクト:

#{flash.empid}

または管理対象Bean内:

例とフラッシュについて
ExternalContext.getFlash().get("empid"); 

詳細はこのpostやで見つけることができますJSF 2 Flash documentation

+0

ありがとうございました。これを試みます。 – rkarwayun

+0

ViewAccessScoped from codeは素晴らしい作品です。 'sessionBloat'を適切な長さに保ち、コードを簡単に保つ... – Kukeltje

関連する問題