en un servlet, se puede obtener petición en ámbito de las habas por:
Bean bean = (Bean) request.getAttribute("beanName");
y sesión en el ámbito granos por:
Bean bean = (Bean) request.getSession().getAttribute("beanName");
y aplicación en el ámbito granos por:
Bean bean = (Bean) getServletContext().getAttribute("beanName");
Si se está ejecutando en una inyección de dependencias capaz marco/envase y el grano es gestionado por el CDI de @Named
en lugar de JSF de @ManagedBean
, es aún más fácil:
@Inject
private Bean bean;
Independientemente de el alcance, cuando está en realidad dentro de FacesContext
(es decir, la solicitud HTTP actual se ha servido a través de la FacesServlet
), entonces la forma normal JSF2 está utilizando Application#evaluateExpressionGet()
:
FacesContext context = FacesContext.getCurrentInstance();
Bean bean = context.getApplication().evaluateExpressionGet(context, "#{beanName}", Bean.class);
que puede ser convenienced como sigue:
y se puede utilizar de la siguiente manera:
Bean bean = findBean("bean");
Sin embargo, cuando ya estás dentro de un @ManagedBean
, luego usando @ManagedProperty
es más limpio ya que es más declarativo.
@ManagedProperty("#{bean}")
private Bean bean;
No estoy seguro de si puede usar estas nuevas anotaciones fuera de JSF/EL, pero comenzaría mirando la especificación JSR 299: http://jcp.org/en/jsr/detail?id=299 – McDowell
Otras personas que tienen problemas con problemas similares también pueden consultar https://bpcatalog.dev.java.net/ajax/jsf-ajax/ (relacionado con AJAX y solicitar el mapeo/manejo, sin obtener frijoles por su nombre) –