私はCDIの実装Weld、JBoss AS 7、およびJSF 2.0アプリケーションを使用しようとしています。Weld + JSF 2.0 @ConversationScopedは状態を保持しません
実際、私の会話を始めると、私の@ConversationSconed @ Named beanは彼の状態を保持していないようです。
これを見るために、私はちょうどカウンタを使用しています。私は、Primefaceとajaxを使用してコマンドボタンをクリックするたびにインクリメントします。
beanpath.xmlはクラスパス(META-INF、WEB-INF ...)に存在し、@ SessionScoped Beanまたは@ManagedBean @ViewScopedを使用すると、非常にうまく動作します。
しかし、私は@ConversationScopedを使用し、@ ManagedBeanを使用するのではなく@Named Beanを使用することを推奨します。たぶん私は、JBoss AS 7またはweb.xmlのためadditionaly設定を行う必要があり、私はここで...
を知らない
は私@ConversationScoped Beanです:
@Named
@ConversationScoped
public class ConversationTest implements Serializable {
private int counter;
@Inject
private Conversation conversation;
public void startConversation() {
System.out.println(counter);
counter++;
if(conversation.isTransient())
conversation.begin();
}
public void stopConversation() {
if (!conversation.isTransient())
conversation.end();
}
public int getCounter() {
return counter;
}
public void setCounter(int counter) {
this.counter = counter;
}
}
そして、ここに私のxhtmlページの内容です:
<h:form prependId="false">
<h:panelGroup id="tests">
<h:outputText value="#{conversationTest.counter}" /> <br/>
<h:outputText value="Test : #{conversationTest.testHello}" /> <br/><br/>
</h:panelGroup>
<p:commandButton
value="Start !"
actionListener="#{conversationTest.startConversation}"
update="tests" />
<br/>
<p:commandButton
value="Stop !"
actionListener="#{conversationTest.stopConversation}"
update="tests" />
</h:form>
私は間違っていますか?私は何かを忘れていますか?
は、あなたの答えをありがとうございました!
「状態を保持していない」とはどういう意味ですか?あなたが期待している結果とは何ですか? –
ボタンをクリックすると、conversationTest.counterの数字が増えていますが、そうではありません。 – Zarkus13