0

JSF2.0 + Spring 3.0 を使用してアプリケーションを構築しています。私の Bean は、このアプリケーションで Spring によって管理されています。
このアプリケーションには、3 つの SelectOneMenuItems(JSF) を持つフォームがあります。

  1. ユーザーが最初のドロップダウン ボックスの値を選択すると、2 番目のドロップダウン ボックスに入力されます (EventChangeListener にロジックを配置したため)。
  2. また、ユーザーが 2 番目のドロップダウンから値を選択すると、2 番目のドロップダウンの選択に従って 3 番目のドロップダウンが入力されます

フォームを送信すると、問題なく送信されますが、ボックスから値が削除されません。春にリクエストスコープを試しましたが、最初のドロップダウンで値を選択し、国と言って州の次のドロップダウンに値を送信するという別の問題が発生します(国のドロップダウン選択に従って州にデータを入力するため)、春はそれを新しいリクエストを作成して Bean を更新すると、国のドロップダウン値が削除され、NullPointerException州にデータを入力するときに取得されます。どうすればいいのか本当に困ってます助けてください

4

3 に答える 3

4

自分で新しい Bean を作成し、 を使用して目的のスコープに配置できますFacesContext

FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("myBean", new MyBean());

コードでこれを使用すると、Bean の現在のインスタンスをオーバーライドして、古い Bean を取り除くことができます。

于 2012-10-23T05:49:31.833 に答える
0

ここでは、セッションのスコープは問題ないと思います。ドロップダウンで選択した値を適切に管理する必要があると思います。DropDown1 を変更したら、DropDown2 と DropDown3 をリセットする必要があります。DropDown2 を変更したら、DropDown3 をリセットします。リセットとは、有効なデータのみをそれらのコンポーネントのモデルにロードまたはフィルタリングすることを意味します。

あなたはJSF2を使用しています。f:ajaxタグでやってますか?コードスニペットはありますか?そこに問題があるかもしれませんが、それはあちこちで少しトリッキーです。

于 2012-10-22T06:19:22.903 に答える
-1

ユースケースに最適なView Scopeを使用できます。ただし、Spring 3.0 はビュー スコープをサポートしていないため、Spring が識別できるようにカスタム ビュー スコープの実装を作成する必要があります。このリンクを参照してください。

于 2012-10-22T05:58:29.333 に答える