我在使用视图范围 bean 时遇到问题。我在 xhtml 中有命令按钮,在托管 bean 中有关联的操作,应该再次呈现相同的视图。操作方法返回正常,但没有呈现视图,它在浏览器中卡住了“等待本地主机”消息。由于某种原因,bean 的 @PreDestroy 方法和注入其中的 ejb 的 @PostConstruct 方法被多次调用(似乎无限)。如果我将 bean 更改为 Sessionscoped,一切正常。我正在使用 netbeans 7.2.1,使用添加了 JSF 框架的 Web 应用程序。
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 在 postback 期间加载了很多次,但是那里的解决方案对我不起作用。
谢谢!