JavaEE JSF2.2 @PostConstructが効かない
以下を参考にJSF2.2のアプリを作成しています。
http://d.hatena.ne.jp/shin/20091001/p5
環境
・Eclipse Keplar
・JDK 1.7.0_21
・JSF 2.2
・GlassFish 4.0
以下のTestBean.javaとindex.xhtmlを作成しました。
index.xhtmlにアクセスした時に@PostConstructが付いているinit()が起動し、変数myNameに値が入ること・logが出力されることを期待していますが、init()が起動していないようです。
原因を教えてください。
TestBean.java
import java.io.Serializable;
import javax.annotation.PostConstruct;
import javax.faces.bean.SessionScoped;
import javax.inject.Named;
@Named
@SessionScoped
public class TestBean implements Serializable{
private String myName = "testName";
/**
* デバッグ用
*/
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
/**
* コンストラクタが呼ばれインスタンスが生成されたあとに呼ばれる
*/
@PostConstruct
private void init(){
this.myName = "test";
for (StackTraceElement stackTraceElement : stackTraceElements) {
System.out.println("-----------------------------");
System.out.println("ClassName : " + stackTraceElement.getClassName());
System.out.println("FileName : " + stackTraceElement.getFileName());
System.out.println("MethodName : " + stackTraceElement.getMethodName());
System.out.println("LineNumber : " + stackTraceElement.getLineNumber());
System.out.println("-----------------------------");
}
}
public String getMyName() {
return myName;
}
public void setMyName(String myName) {
this.myName = myName;
}
}
index.xhtml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Hello, world.</title>
</h:head>
<h:body>
<h:outputText id="myname" value="ようこそ、#{testBean.myName}さん"/>
<h:form>
名前を入力してください。
<h:inputText id="myname" value="#{testBean.myName}"/>
<h:commandButton type="submit" value="実行"/>
</h:form>
</h:body>
</html>