У меня есть составной компонент:фазы слушателем в композитном компоненте не называют никогда
<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, но, похоже, это было исправлено довольно давно.
Я использую GlassFish 3.1.2.2 на Java 6u33 x64.
Ugh ... И я думал, что получаю верх над этим жизненным циклом. Да, это работает, и это достаточно чисто. Спасибо за дополнительный совет. Это просто постоянный, который я искал. –
Добро пожаловать. – BalusC