2011-12-03 13 views
9

Come usare/vantaggi di utilizzare @ViewScoped al di sotto del @ManagedBean in JSF 2.0Uso di @ViewScoped in JSF 2.0?

+3

Vedere anche [Benetif e insidie ​​di '@ ViewScoped'] (http://balusc.blogspot.com/2010/06/benefits-and-pitfalls-of-viewscoped.html) e [Comunicazione in JSF 2.0] (http://balusc.blogspot.com/2011/09/communication-in-jsf-20.html). – BalusC

risposta

38

@ManagedBean solo dichiara che un certo bean è gestito da JSF (lo rende disponibile per linguaggio delle espressioni tra gli altri).

@ViewScoped consente di dichiarare un ambito specifico in cui il bean risiederà. Il valore predefinito (quando non si specifica alcun ambito) è @RequestScoped, il che significa che il bean vivrà attraverso una singola richiesta e verrà quindi distrutto. Altri ambiti sono @SessionScoped e @ApplicationScoped. Le estensioni di terze parti hanno introdotto altri ambiti.

@ViewScoped continueranno a vivere fintanto che si pubblica una pagina. Una "vista" è un'altra parola per "pagina" in Java EE, ma l'ambito della pagina significava già qualcos'altro in Java EE. L'ambito di visualizzazione è molto conveniente, dal momento che consente il pattern di inizializzazione dei dati quando si accede per la prima volta a una pagina (tramite una richiesta senza facce, che di solito è una richiesta GET) e quindi si mantengono tali dati quando si lavora sulla pagina, facendo postback , Richieste AJAX, ecc.

L'ambito è un vero toccasana quando si lavora con le tabelle in JSF in cui si interagisce con i componenti nella tabella. Vale a dire, in JSF esiste una regola per cui i dati che sono stati utilizzati per il rendering della tabella devono essere i dati EXAME SAME che vengono utilizzati dopo il postback durante l'elaborazione dei componenti con cui hai interagito. Con lo scope view questo è banale, ma senza di esso è piuttosto complicato.

Problemi correlati