0

JSF 2.0 の単純なフォームに奇妙な問題があります。このフォームでは、2 つの選択を使用します。最初の選択が選択された場合、2 番目の選択は新しいオプションでリロードする必要があります。Primefaces デモ ページと同じメカニズムを使用します: Primefaces デモ ページ。私のビーンは@ViewScopedです。また、「mvn jetty:run」によって、jetty-maven プラグインでアプリを実行します。今のところ問題ありません。私のフォームはうまく機能します。

この問題は、サーバーの実行中に何かを変更すると発生し、jetty がリロードされます。その後、これらの 2 つの選択は機能しません。最初のオプションを選択すると、2 番目のオプションが応答しません。Spring Security でログアウトしてすべてのセッションをクリアする必要があり、その後フォームが機能するようになります。

Bean を@SessionScopedに変更すると、問題はなくなりました。これは正常に動作していますか?私は自分のフォームをセッションスコープにしたくありません.ViewScopedを好みます。

4

1 に答える 1

1

Bean の postConstruct で、コンテキストがこのようなポストバックであることを確認してください。

@PostConstruct
public void init() {
    if (!FacesContext.getCurrentInstance().isPostback()) { 
        //Write your code here...
    }

または、jsf バージョンが 2.0 の場合は、web.xml で部分的な状態の保存に近い状態を試してみてください。ただし、この方法では、アプリケーションでより多くのメモリ割り当てが必要になる場合があります。

<context-param>
    <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
    <param-value>false</param-value>
</context-param>

幸運を!

于 2013-02-05T14:47:45.403 に答える