2011-02-19 1 views
5

Sto lavorando con JSF 2.0JSF dati 2.0 passare tra i fagioli (o pagine?)

Ho una forma nella mia sezione di amministrazione dove sto andando a selezionare alcuni utenti in un elenco.

Il modulo (selectusers.xhtml) sta aggiungendo questi utenti a un elenco in un bean (SelectUsers.java).

Dopo aver selezionato alcuni utenti, passerò l'elenco degli utenti da SelectUsers.java a un altro bean (AddAddressBean.java) e continuerò ad aggiungere informazioni in un altro modulo (addadress.xhtml) che imposta altre proprietà correlate a AddAddressBean per ciascun utente.

Non so come implementarlo. Mi piacerebbe che AddAddressBean.java fosse indipendente (quindi posso usarlo insieme ad altri bean), quindi preferisco che AddAddressBean.java non sappia degli altri bean.

Potete aiutarmi per favore? =)

BR Carl

risposta

5

Diverse cose veloci vengono in mente:

  1. forse si potrebbe avere un singolo chicco solo per quelle pagine correlate, utilizzando @SessionScoped o CDI di @ConversationScope
  2. Cliccando il pulsante nella pagina 1 in cui verrà visualizzata la pagina 2, nel primo bean, è possibile utilizzare l'oggetto Flash per memorizzare gli oggetti che si desidera trasferire e nel metodo @PostConstruct del secondo bean, è possibile ottenere tutti gli oggetti dall'oggetto Flash
  3. Se non ti dispiace usare l'ambito della sessione, puoi ancora avere 2 bean e un bean può fare riferimento a un altro bean usando jsf way (@ManagedProperty), o Java inject inject (@Inject) o spring spring se usi spring (@Autowired)
+0

ho seguito il secondo metodo. Alla seconda pagina (secondo bean) ottengo un oggetto nullo da Flash nel metodo di costruzione del post. Qualche idea perché? –

0

Questo come ho implementato (usato ConversationScoped come ha detto @bertie).

in grani 1:

@Named("conversationBean1") 
@ConversationScoped 
public class ConversationBean1 implements Serializable { 
      //---start conversation---- 

    } 

grani 2:

@Named("conversationBean2") 
@ConversationScoped 
public class ConversationBean2 implements Serializable 
    { 
     @Inject 
     private ConversationBean1 conversationBean1; 
    }