Я только что понял, что мой компонент мастера забывает шаги, которые лежали в прошлом, когда я использую компонент поддержки @RequestScoped wizard. Использование @SessionScoped будет работать, но безобразно.
Таким образом я попытался заставить это работать, используя @ConversationScoped, но должен был понять некоторый странный эффект. (возможно из опыта J2EE)
С учетом этого вида волшебного бина:
@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();
}
...
}
Объект My Song выглядит следующим образом:
@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, и моя отладка подтверждает, что это так, но это относится только к одному шагу мастера.
Любая помощь по этому вопросу будет очень признательна.
Привет, Марсель.