PhaseListener が2回呼ばれる件
JSFでリスナーが2回呼ばれる
・プロジェクト追加するときに作成されるweb.xmlで、「com.sun.faces.config.ConfigureListener(faces-config.xmlを使いますよというリスナ)」が定義されるのですが、これを削除すると解消しました。
検証
・PhaseListener
@Override
public void afterPhase(PhaseEvent arg0) {
System.out.println("afterPhaseが呼ばれた:" + getPhaseId().toString());
}
@Override
public void beforePhase(PhaseEvent phaseEvent) {
System.out.println("beforePhaseが呼ばれた:" + getPhaseId().toString());
}
@Override
public PhaseId getPhaseId() {
return PhaseId.RENDER_RESPONSE;
}
・2回呼ばれているときのSTDOUT
beforePhaseが呼ばれた:RENDER_RESPONSE 6
beforePhaseが呼ばれた:RENDER_RESPONSE 6
[2016/08/15 15:24:10.381] Creating instance of bean 'login'
・・・
[2016/08/15 15:24:10.381] Finished creating instance of bean 'login'
afterPhaseが呼ばれた:RENDER_RESPONSE 6
afterPhaseが呼ばれた:RENDER_RESPONSE 6
・正しく呼ばれるときのSTDOUT
beforePhaseが呼ばれた:RENDER_RESPONSE 6
[2016/08/15 15:29:52.390] Creating instance of bean 'login'
・・・
[2016/08/15 15:29:52.390] Finished creating instance of bean 'login'
afterPhaseが呼ばれた:RENDER_RESPONSE 6