2011-02-02 4 views
1

プロジェクトの検索ページを作成する必要があります。 入力フィールドは、以下のとおりです。サブミット後のJSF +リッチインタフェースの問題

<h:inputText styleClass="field35" value="#{searchBean.country}"></h:inputText> 
<h:inputText maxlength="20" styleClass="field35" value="#{searchBean.destination}"></h:inputText> 
<rich:calendar datePattern="dd/MM/yyyy" value="#{searchBean.startDate}"></rich:calendar> 
<rich:calendar datePattern="dd/MM/yyyy" value="#{searchBean.endDate}"></rich:calendar> 

と私は押した後:

<h:commandButton id="cb41" action="#{searchBean.processForm}" value="Search" styleClass="button" /> 

私は結果が同じページ上rich:dataTableセクションで印刷されることを期待します。結果変数は、データベースと、ユーザからのデータが同じページに転送され移入されprocessForm方法において

<rich:dataTable value="#{searchBean.results}" var="journey"> 

最初の検索後はすべて問題ありませんが、もう一度検索を押すと、Beanとページ入力フィールド間のバインディングが失われます。言い換えれば、country、destination、startDataおよびendDateのprocessFormメソッドでは、ページ上の対応するフィールドに何があっても、NULLのみを取得します。

Beanのスコープはリクエストであり、すべてのフィールドにはゲッターとセッターがあります。

誰かが問題があると考えている人はいますか?

ありがとうございました。

編集: ありがとうt-edd セッションの有効範囲を変更しましたが、それは常にセッション全体にBeanを保持するためのパフォーマンスキラーです(必要なページを終了するたびに削除するのは複雑です) 。私はなぜ豆が破壊されたのか理解していますが、私のページから適切な値で次の要求の後に新しいものを作成すべきではありませんか?

+1

を使用することができます(私はお勧めしません)、そのデータがセッションに、Beanのスコープを変更することなく保存される方法

セッションスコープ内のBeanはパフォーマンスキラーです!それは何ですか - サーバー上のユーザーセッションごとに一貫してBeanを永続させるだけですが、wchichはいくつかのリソースを取りますが、その問題は考えません。ユーザーセッションが期限切れになると、Beanが破棄されます。 – Eduard

答えて

2

あなたがあなたのページに

<t:saveState value="#{searchBean}" /> 

を追加する必要がありそうです。

このコントローラーは、要求の間にBeanの状態を保存します(モデルの値をビューのコンポーネントツリーに格納する機能を提供します)。あなたはまた、私は入れていることを同意しない

<a4j:keepAlive beanName="searchBean"/> 
+0

それはそれです。どうもありがとう。 – Klark

1

私は問題がBean要求の範囲であると信じています。リクエストごとにデータをロードしますか?もしそうでなければ、値がnullであることがかなり明確です。

ポストここで私は多くの助けもカントそれなしであなたのコントローラのコード、:編集

...セッションスコープを試してみたり、あなたのサービスからデータを取得したりelswereする必要があります。この問題は、Beanをセッションスコープに入れなくても解決できます。簡単に言えば、gettresとsetterを使用してリクエスト間のBeanプロパティにデータを格納する必要があります。

+0

ありがとうt-edd、私は私の質問を更新しましたので、素敵で、もう少し私を助けてください:) – Klark

関連する問題