2009-12-10 13 views
6

ho fatto qualche lettura e giocare e ho ancora qualche domanda Speravo che qualcuno potrebbe rispondere:JSF fagioli backing multiple in un'unica pagina

Allora, posso utilizzare due o più fagioli backing in una singola pagina JSF?

<h:intputText value="#{myFirstBean.firstProperty}" /> 
<h:intputText value="#{mySecondBean.secondProperty}" /> 

Se posso, perché non dovrei farlo? (Suppongo che non dovrei, perché nessuno lo fa)

Se non ci riesco, perché?

Inoltre, ho letto da qualche parte qualcosa come "il caricamento della pagina il quadro sarebbe istanziare il backing bean, e popolarlo se si tratta di un postback". Dicono l'appoggio di fagioli ma non riesco a capire come il quadro sapere che backup fagiolo per istanziare.

risposta

4

Chiariamo alcuni termini:

  • fagioli gestiti sono JavaBeans componenti che è possibile configurare utilizzando l'impianto bean gestito see
  • fagioli backing, sono un JavaServer Faces fagioli gestiti che sono associati con i componenti dell'interfaccia utente utilizzati in una particolare pagina see

Quindi, sì, ci puoi e due o più bean gestiti in una singola pagina JSF, ma la suddivisione di componenti UI, listener, logica ecc. che sono correlati a una pagina in due o più bean di supporto è ancora possibile ma molto indesiderabile e potrebbe causare molti problemi e cattiva codice.

+5

Questa definizione di Sun è piuttosto opaca.Direi piuttosto: un bean di supporto è una classe Java (modello) associata a una vista, un bean gestito è una * istanza * di questa classe che è associata a una * certa * vista e ambito. – BalusC

+1

Infatti. Molti sviluppatori confondono entrambi i termini. Uso la parola 'backing bean' nella situazione quando questa classe viene creata a scopo jsf. Per gli altri bean (come i bean dei modelli di dati) uso i bean di gestione dei termini. – cetnar

3

Perché no? È una cosa perfettamente legittima da fare. Generalmente, una pagina deve essere associata a un bean (per motivi di buona struttura), ma se si desidera, ad esempio, mostrare l'ora corrente su ciascuna pagina, è possibile fare riferimento al proprio timeBean.currentTime, tra le altre cose (di naturalmente, qui è preferibile usare include/templating).

+0

Sto ancora cercando di capire come il framework decide quali bean istanziare quando si visualizza una pagina in una richiesta GET. Penso che sarebbe corretto chiedere "quando" il bean viene istanziato? Dovrei assumere al primo accesso. –

+1

I bean gestiti vengono creati dal framework quando vengono utilizzati nella pagina visualizzata. Ovviamente stiamo parlando di scope scope e bean di sessione che non escono ancora. – cetnar

1

Altre domande hanno già avuto risposta. Tuttavia:

Inoltre, ho letto da qualche parte qualcosa come "a pagina caricare il framework istanziare il bean di supporto e popolarlo se si tratta di un postback". Dicono il bean di supporto, ma non riesco a capire come il framework sappia quale backing bean istanziare.

I fagioli vengono risolti con il loro nome. Ad esempio, #{myFirstBean.firstProperty} cerca il bean denominato "myFirstBean" (un'istanza della classe MyFirstBean). È possibile regolare il nome come in:

@ManagedBean(name = "foo") 
public class SomeClass { ... } 

allora si potrebbe fare riferimento che via #{foo.firstProperty}.

Problemi correlati