同じ JSF リクエストに対して、PhaseListener の beforePhase() メソッドと afterPhase() メソッドの間で属性を共有する必要があります。
次のスニペットはスレッドセーフですか?
public class MyPhaseListener implements PhaseListener {
private MyObject o = null;
@Override
public void beforePhase(PhaseEvent event) {
if (condition) {
o = new MyObject();
}
}
@Override
public void afterPhase(PhaseEvent event) {
if (o != null) {
o.process();
o = null;
}
}
@Override
public PhaseId getPhaseId() {
return PhaseId.RESTORE_VIEW;
}
}
そうでない場合、他の解決策は何ですか?