我剛剛意識到我的嚮導組件忘記了過去的步驟,因爲我正在使用@RequestScoped嚮導支持bean。使用@SessionScoped可以工作,但很難看。 因此,我試圖讓它使用@ConversationScoped工作,但必須實現一些奇怪的效果。 (也許出來的J2EE經驗)CDI對話和primefaces嚮導組件
鑑於這種嚮導的支持bean:
@Named
@RequestScoped
public class EvaluationWizard implements Serializable {
...
@Inject
private Conversation conversation;
@Inject
private Song selectedSong;
...
public void setSelectedSong(final Song song) {
selectedSong = song;
}
public Song getSelectedSong() {
return selectedSong;
}
public void onDialogOpen(final ActionEvent actionEvent) {
conversation.begin();
}
public void onDialogClose(final CloseEvent closeEvent) {
conversation.end();
}
...
}
我的歌物體看起來是這樣的:
@Named
@ConversationScoped
public class Song extends SelectItem implements Serializable {
private String title;
public void setTitle(final String title) {
this.title = title;
}
@Override
public String toString() {
return title;
}
}
嚮導包含爲了把事情幾個步驟向上。 selectedSong屬性是列表中的一個項目,表示當前選擇的歌曲。 這個選擇被保存在「EvaluationWizard」支持bean中,我的調試確認了這種情況 - 但只有一個嚮導步驟的情況。
對此的任何幫助將非常感激。
問候,馬塞爾。
謝謝 - 我想只有一個富客戶端ajax-only頁面,沒有進一步的位置變化發生。默認的CDI實現不提供ManagedBean方法附帶的ViewScope。所以我決定看看Seam 3和它的「Faces」模塊,它使用ViewScoped擴展了CDI。完成後,我根據請求從RequestScoped更改爲ViewScoped,但現在嚮導狀態一旦加載就保持不變。 (感覺像SessionScoped)會話開始並正確停止,但ConversationScoped bean始終保持不變。 – Marcel 2011-06-19 10:08:07