ビュー スコープ Bean に問題があります。xhtml にコマンドボタンがあり、マネージド Bean に関連付けられたアクションがあり、同じビューを再度レンダリングすることになっています。アクション メソッドは問題なく返されますが、ビューがレンダリングされず、ブラウザーで「localhost を待機しています」というメッセージが表示されたままになります。なぜか 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>
バッキング Bean:
@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 中に何度もロードされますが、解決策がうまくいきません。
ありがとう!