2012-12-22 18 views
15

Qual è l'ordine di esecuzione di quelli?jsf ordine di esecuzione di f: eventi

Ecco una domanda sui possibili nomi f:event evento: List of JSF 2 events?

preRenderComponent 
preRenderView 
postAddToView 
preValidate 
postValidate 

voglio verificare se un utente viene salvato in un session bean è collegato e, se non reindirizzamento al sito di accesso, che deve si verificano prima della fase di conversione view-param poiché il convertitore utilizzato dipende dall'utente loggato. 'preValidate' sembra aver luogo dopo la conversione e quindi ho bisogno di un evento precedente.

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

avrei potuto mettere 'checkLoggedIn()' in 'beanB' troppo, ma ha cercato di utilizzare una richiesta separata ambito di fagioli solo per il controllo in modo che io possa riutilizzare facilmente.

risposta

26

Qual è l'ordine di esecuzione di quelli?

  • postAddToView corre subito dopo si aggiunge il componente per visionare durante la visualizzazione del tempo di costruzione (che di solito è durante il ripristino fase di vista, ma può anche essere durante rendere fase di risposta, ad esempio, la navigazione).
  • preValidate viene eseguito prima della convalida del componente (che di solito si verifica durante la fase di convalida, ma può anche essere applicata alla fase dei valori di richiesta se immediate="true").
  • postValidate viene eseguito subito dopo la convalida del componente (che di solito si verifica durante la fase di convalida, ma può anche essere applicata la fase dei valori di richiesta se immediate="true").
  • preRenderView viene eseguito immediatamente prima del rendering della vista durante la fase di risposta del rendering.
  • preRenderComponent viene eseguito immediatamente prima del rendering del componente durante la fase di risposta del rendering.

Fare clic sui collegamenti per visualizzare la descrizione dettagliata nell'introduzione di javadoc.


voglio verificare se un utente viene salvato in un session bean è collegato e, se non reindirizzare al sito di accesso, che deve avvenire prima fase di conversione view-param dal convertitore utilizzato dipende sull'utente registrato. 'preValidate' sembra aver luogo dopo la conversione e quindi ho bisogno di un evento precedente.

È necessario utilizzare un semplice servlet filter per questo, non un evento JSF. Ho postato diversi esempi prima:

+1

'preValidate' /' postValidate' non sono chiamati a tutti su un componente in caso di 'immediata = "true"'. Guardando il codice sorgente di Mojarra lo conferma. Dovrebbe essere così? –