複合コンポーネントがあります:
<cc:interface componentType="com.example.MyComponent">
<!-- ... -->
</cc:interface>
<cc:implementation>
<f:phaseListener binding="#{cc}"/>
<div id="#{cc.clientId}">
<!-- ... -->
</div>
</cc:implementation>
そしてそのクラス:
@FacesComponent("com.example.MyComponent")
public class MyComponent extends UIOutput implements NamingContainer, PhaseListener
{
@Override
public String getFamily()
{
return "javax.faces.NamingContainer";
}
@Override
public PhaseId getPhaseId()
{
return PhaseId.ANY_PHASE;
}
@Override
public void beforePhase(PhaseEvent event)
{
// Do something ...
}
@Override
public void afterPhase(PhaseEvent event)
{
// Do something ...
}
}
ページの完全な読み込みでも部分的な読み込みでも、beforePhase(PhaseEvent)
norafterPhase(PhaseEvent)
メソッドは呼び出されません。
ここでこのバグに注意します:http://java.net/jira/browse/JAVASERVERFACES-1200、しかしそれはかなり前に修正されたようです。
Java6u33x64でGlassFish3.1.2.2を使用しています。