У меня проблемы с bean-компонентом с областью видимости. У меня есть commandbutton в xhtml с соответствующим действием в управляемом компоненте, который должен снова отображать одно и то же представление. Метод действия возвращается нормально, но представление не отображается, оно застряло с сообщением «ожидание локального хоста» в браузере. По какой-то причине метод bean @PreDestroy и методы @PostConstruct встроенного в него ejb вызываются несколько раз (кажется, бесконечно). Если я изменю bean-компонент на Sessionscoped, все будет работать нормально. Я использую netbeans 7.2.1, работаю над веб-приложением с добавленной инфраструктурой JSF.
xhtml-часть:
<h:form id="getmovie" >
<h:panelGrid id="movienameform" columns="3" rendered="#{!MovieBean.choseMovie}">
<h:outputLabel for="moviename" value="Movie name: "/>
<h:inputText id="moviename" value="#{MovieBean.name}"/>
<h:commandButton value="submit" action="#{MovieBean.checkMovieExists()}">
</h:commandButton>
</h:panelGrid>
</h:form>
поддерживающая фасоль:
@Named(value = "MovieBean")
@ViewScoped
public class MovieBean implements Serializable {
private String name;
private boolean exist;
private boolean searched = false;
private boolean choseMovie = false;
@EJB
MovieejbLocal movieejb;
ScreenejbLocal screenejb;
public String checkMovieExists() {
setExist(getMovieejb().checkMovieExists(getName()));
searched = true;
return null;
}
...
}
и ejb
@Stateful
@Local(MovieejbLocal.class)
public class Movieejb implements MovieejbLocal {
....
}
Мне нужно, чтобы этот bean-компонент имел область просмотра, а не область сеанса. Любые идеи, что не так с viewScoped здесь?
Я видел этот вопрос: @ViewScoped Managed bean загружается много раз во время обратной передачи, но решение там мне не подходит.
Спасибо!
@ViewScoped
и некоторыми реализациями Mojarra с кучей вопросов здесь, в SO. Это связано с упоминанием проблемы куриного яйца в ссылке, которую вы разместили. Попробовал на базовом примере и работает (для меня Mojarra jsf 2.1.26). - person Xtreme Biker   schedule 20.09.2013