1


私はJSFで学び始めたばかりで、この問題について疑問に思っています。私は16個のチェックボックスを持っています。私がページを開き、兄弟もページを開くと、同じセッションを行っているように見えます。チェックボックスの 1 つをクリックすると、兄弟のブラウザでもチェックされます。private ArrayList<String> selectedBoes = new ArrayList<String>();
選択したチェックボックスは、 My ManagedBean ist SessionScopedに保存されます。

なぜこれが起こっているのか、それを回避する方法は?

4

1 に答える 1

2

兄弟のセッション ID はcdbbb126e96060ddb924b9d5e591です。私のはcd9a5c4180bd9dfef0ec8db2ac4d

考えられる唯一の原因は、実際にそれらをセッションスコープに保存していないことです。症状は、それらをアプリケーションスコープに保存しているか、それを宣言していることを示していますstatic(したがって、問題のコードは実際のコードをまったく表していません。コメントのコードは、より少ないまたはより多く、別のプロパティ名を使用したようです。頭のてっぺんから入力しようとしたようです。そうすべきではありません。実際のコードをコピーペーストする必要があります)。

@NamedJSF の代わりにCDI を使用している場合は、スコープ アノテーション@ManagedBeanで特に指定しない限り、デフォルトでアプリケーション スコープになることに注意してください。javax.enterprise.contextそのため、CDI でサポートされていないJSF 独自のjavax.faces.bean.SessionScopedアノテーションを使用している場合でも、それはアプリケーション スコープ内にあります。

于 2013-02-03T01:58:33.633 に答える