我想在JBoss AS 7和JSF 2.0應用程序中使用CDI的實現Weld。Weld + JSF 2.0 @ConversationScoped不保持狀態
事實是,當我開始對話時,我的@ConversationSconed @Named bean似乎沒有保持他的狀態。
在ordre中看到這一點,我只是使用一個計數器,每次點擊命令按鈕時使用Primefaces和ajax就會增加計數器。
beans.xml存在於類路徑(META-INF,WEB-INF ...)中,我只是想用@SessionScoped bean或@ManagedBean @ViewScoped精確地說,它工作得很好!
但我優先使用@ConversationScoped並保留@Named bean,而不是使用@ManagedBean。
也許我需要做的JBoss的additionaly配置7或在web.xml中,我不知道......
這裏是我的@ConversationScoped豆:
@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>
我在做什麼錯了?我忘記了什麼嗎?
非常感謝您的回答!
我不確定你的意思是「不保持狀態」?你期望的結果是什麼?發生了什麼? – 2012-02-19 22:45:27
當我點擊這個按鈕時,我跳躍的是conversationTest.counter的數字增加,但事實並非如此。 – Zarkus13 2012-03-01 17:26:33