Насколько я понимаю, Zone - это компонент, и я могу обрабатывать его события.
Поэтому я набираю следующий код:
@InjectComponent
private Zone zoneSample;
@OnEvent(component = "zoneSample")
private void zoneEvent() {
System.out.println(String.format("Zone client id: %s", zoneSample.getClientId()));
}
Исключение не выбрасывается, поэтому идентификатор зоны установлен правильно. Но это событие не уволено! Должен ли этот метод обработки событий соответствовать всем событиям для зоны?
Я ожидал, что он будет запущен в основном раньше, пока и после рендеринга зоны, потому что мне нужно увидеть, могу ли я получить сгенерированный идентификатор клиента зоны, чтобы использовать его, чтобы показать эту зону позже, используя класс AjaxResponseRenderer.
В зоне нет событий. Там есть удобный микс, который может помочь вам в этом сценарии, микшер RenderNotification.
Он предоставляет два события: beginRender и afterRender, я думаю, что все, что вам нужно. После применения mixin к зоне код для обработки событий будет выглядеть примерно так:
void onBeginRenderFromZoneSample(MarkupWriter writer)
{
...
}
void onAfterRenderFromZoneSample(MarkupWriter writer)
{
...
}