Каков «официальный» способ прослушивания SEAM на этапах JSF-SEAM? - PullRequest
3 голосов
/ 28 сентября 2010

Простой вопрос по названию.

В моем случае я хочу прослушать фазу "before RENDER_RESPONSE" и изменить внутреннее состояние некоторых компонентов.

Является ли PhaseListener «правильным способом» сделать это в приложениях SEAM?

1 Ответ

4 голосов
/ 28 сентября 2010

Если вы хотите изменить JSF внутреннее состояние компонента, положитесь на слушатель фазы JSF.Ниже описан способ объявления слушателя фазы JSF

@Name("applicationPhaseListener")
@Scope(ScopeType.APPLICATION)
public class ApplicationPhaseListener {

    /**
      * Called TRANSPARENTLY by Seam
      */
    @Observer("org.jboss.seam.beforePhase")
    public void beforePhase(PhaseEvent event) {


    }

    /**
      * Called TRANSPARENTLY by Seam
      */
    @Observer("org.jboss.seam.afterPhase")
    public void afterPhase(PhaseEvent event) {

    }



}

Но если вы хотите изменить Контекстное состояние шва состояние компонента, используйте

@Name("applicationPhaseListener")
public class ApplicationPhaseListener {

    @Observer("applicationListener")
    public void applicationListener() {

    }

}

Youcan

Вызовите ваше событие программно

Events.instance().raiseEvent("applicationListener");

Используя аннотацию @RaiseEvent, которая помещена над каким-либо методом действия

@RaiseEvent("applicationListener")
public void doSomething() {

}

pages.xml

<page id="<PAGE_ID_GOES_HERE>">
    <raise-event type="applicationListener"/>
</page>
...