我有一个复合组件:阶段监听器还没有被调用
<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)
也不afterPhase(PhaseEvent)
方法被称为在任何情况下,无论是全部或部分页面加载。
我在这里注意到这个错误:http://java.net/jira/browse/JAVASERVERFACES-1200,但它好像在一段时间前已经修复。
我在Java 6u33 x64上使用GlassFish 3.1.2.2。
呃......我以为我正在这个生命周期的东西之上。是的,它的工作原理,它足够干净。感谢您的额外提示。这只是我一直在寻找的常数。 – 2012-08-15 00:52:42
不客气。 – BalusC 2012-08-15 01:30:06