0

conversation.end が呼び出されたときに conversation.id はリセットされませんか?

シナリオ: CRUD で会話スコープを使用するアプリがあるため、リスト ページにアクセスすると会話が開始されます。詳細に移動し、[戻る] をクリックすると、会話が終了し、会話が再開されます。しかし、デバッグ モードにいる間に、conversation.end() が呼び出されると、conversation が null に設定されることがわかりました。次に、conversation.begin() を再呼び出しすると、conversation.id は 1 にリセットされず、最後の値 + 1 にリセットされます。そのように動作するのは正しいですか?

さらに不可解なのは、ログアウトして再度ログインした後、conversation.id が最後の値 + 1 を取得することです。

私の環境:javaee-apiを使用したJboss 7.1.3。

protected void beginConversation() {
    if (conversation.isTransient()) {
        conversation.begin();
    }
}

protected void endConversation() {
    if (!conversation.isTransient()) {
        conversation.end();
    }
}

したがって、基本的に、すべてのバッキング Bean によって拡張された基本エンティティ (上記のコードが定義されている場所) があります。リスト ページがレンダリングされると、beginConversation が呼び出されます。詳細ページで戻るボタンをクリックすると、endConversation が呼び出されます。

4

1 に答える 1

1

会話 ID をリセットする必要があるのはなぜですか?

これらの質問を解決する最善の方法は、仕様(あなたの場合は CDI 1.0)を直接確認することです。これには、コンテナーが会話の ID を生成する必要があるが、方法ではないと記載されています。

この質問を確認してください。これは、WELD でどのように行われるかを示しています。

于 2013-04-18T14:26:09.567 に答える