¿Cómo se procesan los parámetros de la URL de la cadena de consulta GET en el bean de respaldo en la carga de la página?

He leído cómo enviar parámetros usando JSF, pero ¿qué ocurre si el usuario companyId su companyId en la URL al acceder a su página de inicio de sesión? Por ejemplo,

http: //my.company.url/productName/login.faces? companyId = acme .

La forma en que lo hacemos ahora, hay un poco de código scriptlet que toma el valor de la solicitud y luego lo establece en la sesión. Ese parámetro cambia su apariencia desde la página de inicio de sesión para que cada cliente pueda tener una vista de página de inicio de sesión diferente. Estamos usando extjs hasta que cambie a JSF.

¿Hay alguna manera de hacerlo usando JSF 2 o quizás PrimeFaces?

Sí, puede usar para establecer un parámetro de solicitud como una propiedad de bean administrada.

    

Si es necesario, puede invocar una acción de bean usando (solo JSF 2.2+) o .

     

Al usar puede incluso devolver un resultado de navegación.

 public String onload() { // ... return "somepage"; } 

Cuando todavía no está en JSF 2.2, puede usar ExternalContext#redirect() para eso. Consulte también, entre otros, Cómo realizar navegación en el método de escucha preRenderView .

Tenga en cuenta que esto no es específico de PrimeFaces. Es solo parte de JSF estándar. PrimeFaces es simplemente una biblioteca de componentes que proporciona compatibilidad mejorada con ajax y skinnability.

Ver también:

  • ¿Para qué pueden usarse , y ?
  • Comunicación en JSF 2.0 – Procesamiento de los parámetros de solicitud GET

Los parámetros de URL también se pueden tratar como parámetros de solicitud, de modo que también se puede acceder a través de

 FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap() 

Hay una biblioteca de utilidades, OmniFaces que hace esto de la caja.

 @Inject @Param private String key; @Inject @Param private Long id;