要約すると、@PostConstruct を使用したメソッドは、マネージド Bean 上の WebLogic12c 上の JSF によって呼び出されません。
私は非常に基本的なアプリケーションを持っています。
使用技術: JSF2.0
アプリケーション サーバー: WebLogic 12c
ジャワ
@ManagedBean
@ViewScoped
public class BeanTest implements Serializable {
private String hola_mundo = "";
public BeanTest(){
this.init();
}
private void init(){
hola_mundo +=" Enter to construct - ";
}
@PostConstruct
public void initPostConstruct(){
hola_mundo +=" Enter to PostConstruct - ";
}
public String getHola_mundo() {
return hola_mundo;
}
public void setHola_mundo(String hola_mundo) {
this.hola_mundo = hola_mundo;
}
}
XHTML
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
Test
<br/>
#{beanTest.hola_mundo}
</h:body>
Managed Bean が JSF のインスタンスの場合、Managed Bean の beanTest は作成されます (通常のコンストラクターで入力) が、PostConstruct でメソッドに入らない (無視する、呼び出さない)。
WebLogic で表示されるテキスト: Enter to Construct 予期されるが、WL では表示されないテキスト: Enter to Construct - Enter to PostConstruct
アプリケーションは他のアプリケーション サーバーにデプロイされています。
- グラスフィッシュ 3.1.1
- グラスフィッシュ 3.1.2
- トムキャット 7.0.22
そして、期待される結果を示します。
この問題は JSF マネージド Bean (リクエスト、セッション、ビュー、アプリケーション) でのみ発生します。CDI を使用すると、PostConstruct が呼び出されます。しかし、JSF ViewScoped アノテーションを使用する必要があります。
何か考えがある人?