2011-02-19 15 views
5

estoy trabajando con JSF 2.0JSF datos del pasaporte de 2,0 entre los granos (o páginas?)

Tengo un formulario en mi sección de administración donde voy a seleccionar algunos usuarios en una lista.

El formulario (selectusers.xhtml) está agregando estos usuarios a una lista en un bean (SelectUsers.java).

Después de haber seleccionado algunos usuarios, pasaré la lista de los usuarios de SelectUsers.java a otro bean (AddAddressBean.java) y continuaré agregando información en otra forma (addadress.xhtml) que establecer otras propiedades relacionadas con AddAddressBean para cada usuario.

No sé cómo implementarlo. Me gustaría que AddAddressBean.java sea independiente (para que pueda usarlo junto con otros beans), así que prefiero que AddAddressBean.java no sepa sobre otros beans.

¿Puedes ayudarme? =)

BR Carl

Respuesta

5

Varias cosas rápidas vienen a la mente:

  1. Tal vez podría tener un solo grano sólo para aquellas páginas relacionadas, utilizando @SessionScoped o de CDI @ConversationScope
  2. Al hacer clic el botón en la página 1 donde lo llevará a la página 2, en el primer frijol, puede usar el objeto Flash para almacenar los objetos que desea pasar, y en el método @PostConstruct del segundo frijol, puede obtener todos los objetos del objeto Flash
  3. Si no te importa usar el alcance de la sesión, aún puedes tener 2 beans, y un bean puede referirse a otro bean usando el jsf way (@ManagedProperty), o el modo de inyección Java EE (@Inject) o el método spring si usas la primavera (@Autowired)
+0

I siguió el segundo método. En la segunda página (segundo bean) obtengo un objeto nulo de Flash en el método postconstruir. ¿Alguna idea por qué? –

0

Así como lo implementé (usé ConversationScoped como @bertie dijo).

bean 1:

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

    } 

bean 2:

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