2012-12-22 2 views
15

Jaka jest kolejność wykonywania tych?jsf kolejność wykonywania f: zdarzenia

Oto jest pytanie o możliwych nazw f:event wydarzenie: List of JSF 2 events?

preRenderComponent 
preRenderView 
postAddToView 
preValidate 
postValidate 

Chcę sprawdzić, czy użytkownik jest zapisany w fasoli sesji jest zalogowany i jeśli nie przekierowanie do strony logowania, który musi występuje przed fazą konwersji widok-param, ponieważ używany konwerter zależy od zalogowanego użytkownika. "preValidate" wydaje się mieć miejsce po konwersji i dlatego potrzebuję wcześniejszego wydarzenia.

<f:event type="preRenderView" listener="#{beanA.checkLoggedIn()}"/> 
<f:viewParam name="param" value="#{beanB.param}" converter="#{beanB.converter}" required="true"/> 

mógłbym umieścić „checkLoggedIn()” „w” beanB też, ale starał się wykorzystywać oddzielny wniosek o zakresie fasoli tylko dla sprawdzenia, abym mógł go ponownie użyć łatwo.

Odpowiedz

26

Jaka jest kolejność wykonywania tych?

  • postAddToView biegnie po składnik dodaje się do góry podczas widzenia budowy czasu (zwykle podczas przywracania widok fazy, ale może być również w czynią etapu reakcji, na przykład nawigacyjnych).
  • preValidate jest uruchamiany tuż przed sprawdzeniem poprawności komponentu (co zwykle ma miejsce podczas fazy sprawdzania poprawności, ale można również zastosować wartości żądań, jeśli jest to immediate="true").
  • postValidate jest uruchamiany zaraz po sprawdzeniu poprawności komponentu (co zwykle ma miejsce podczas fazy sprawdzania poprawności, ale można również zastosować wartości żądań fazy, jeśli immediate="true").
  • preRenderView działa tuż przed renderowaniem widoku podczas fazy odpowiedzi na render.
  • preRenderComponent działa tuż przed wyodrębnieniem komponentu podczas fazy odpowiedzi na render.

Kliknij łącza, aby wyświetlić szczegółowy opis w wprowadzeniu javadoc.


Chcę sprawdzić, czy użytkownik jest zapisany w fasoli sesji jest zalogowany i jeśli nie przekierowanie do strony logowania, który musi nastąpić przed fazą konwersji view-param ponieważ stosowany przelicznik zależy na zalogowanym Użytkowniku. "preValidate" wydaje się mieć miejsce po konwersji i dlatego potrzebuję wcześniejszego wydarzenia.

należy użyć prostego servlet filter do tego, a nie wydarzenie JSF. I zostały zaksięgowane kilka przykładów wcześniej:

+1

'preValidate' /' postValidate' nie są nazywane w ogóle na komponencie w przypadku 'natychmiastowe = "true"'. Patrzenie na kod źródłowy Mojarra potwierdza to. Czy to powinno tak być? –