【发布时间】:2012-08-10 14:45:33
【问题描述】:
我有一个复合组件:
<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。
【问题讨论】:
标签: java jsf jsf-2 composite-component phaselistener