В запросах GET корень представления еще не создан на этапе до ответа ответа рендеринга, а на этапе после - слишком поздно, так как ответ уже был обработан и отправлен клиенту.Корень представления, однако, доступен для изменения во время системного события «pre render view».
public class PreRenderViewListener implements SystemEventListener {
@Override
public void processEvent(SystemEvent event) throws AbortProcessingException {
UIViewRoot root = (UIViewRoot) event.getSource();
// ...
}
@Override
public boolean isListenerForSource(Object source) {
return true;
}
}
Чтобы запустить его, зарегистрируйте его следующим образом в faces-config.xml
:
<application>
<system-event-listener>
<system-event-listener-class>com.example.PreRenderViewListener</system-event-listener-class>
<system-event-class>javax.faces.event.PreRenderViewEvent</system-event-class>
</system-event-listener>
</application>