Forma correcta de recuperar otra instancia del bean de contexto
-
13-10-2019 - |
Pregunta
Estamos utilizando el código siguiente para obtener la instancia de bean gestionado por el contexto.
FacesUtils.getManagedBean("beanName");
¿Es la forma correcta de hacerlo ?. Si varios usuarios acceden al mismo grano de lo que sucederá? ¿Cómo se gestionan los casos de frijol?
Solución
Desde FacesUtils
no es parte de la implementación JSF estándar, no está claro lo que está haciendo en realidad bajo las sábanas.
En cualquier caso, cuando estés ya en el interior de un bean gestionado, a continuación, la forma preferida es inyectar el otro frijol como propiedad administrada. Vamos a suponer que ya se encuentra en JSF 2.0, así que aquí tiene una JSF 2.0 apuntado ejemplo.
@ManagedBean
@SessionScoped
public void OtherBean {}
@ManagedBean
@RequestScoped
public void YourBean {
@ManagedProperty("#{otherBean}")
private void OtherBean;
@PostConstruct
public void init() {
otherBean.doSomething(); // OtherBean is now available in any method.
}
public void setOtherBean(OtherBean otherBean) {
this.otherBean = otherBean;
}
// Getter is not necessary.
}
Pero cuando todavía estás en JSF 1.x, entonces usted necesita para hacerlo por la entrada <managed-property>
en faces-config.xml
como se explica en esta pregunta: los datos que pasan entre beans gestionados .
Si usted usa @Named
CDI en lugar de @ManagedBean
JSF, el uso @Inject
en lugar de @ManagedProperty
. Para ello, no se requiere un método de selección.
Ver también:
- comunicación en JSF2
- Get JSF frijol por su nombre logró en cualquier clase relacionada servlet
- (@ManagedBean) o frijoles CDI (@Named) / a>
En cuanto a su preocupación
Si varios usuarios acceden al mismo grano de lo que sucederá? ¿Cómo se gestionan los casos de frijol?
Son gestionados por JSF. Si se encuentra un frijol, a continuación, JSF solo estará exactamente este bean. Si no se encuentra ninguna frijol, a continuación, JSF acaba de crear automáticamente una y poner en el alcance de dicha reglamentación. JSF no va a crear innecesariamente múltiples granos.