¿Cómo puedo procesar los parámetros de URL de la cadena de consulta GET en el respaldo de bean al cargar la página?


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

Http://my.empresa.url / ProductName / login.¿caras?CompanyId = acme .

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

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

Author: BalusC, 2012-05-23

3 answers

Sí, puede utilizar el <f:viewParam> para establecer un parámetro de solicitud como una propiedad bean administrada.

<f:metadata>
    <f:viewParam name="companyId" value="#{bean.companyId}" />
</f:metadata>

Si es necesario, puede invocar una acción bean usando <f:viewAction> (solo JSF 2.2+) o <f:event type="preRenderView">.

<f:metadata>
    <f:viewParam name="companyId" value="#{bean.companyId}" />
    <f:viewAction action="#{bean.onload}" />
</f:metadata>

Al usar <f:viewAction> incluso puede devolver un resultado de navegación.

public String onload() {
    // ...

    return "somepage";
}

Cuando aún no esté en JSF 2.2, puede usar ExternalContext#redirect() por eso. Consulte también, entre otros, Cómo realizar la navegación en el método de escucha de la vista previa.

Tenga en cuenta que esto no es específico a PrimeFaces. Es solo parte de la JSF estándar. PrimeFaces es simplemente una biblioteca de componentes que proporciona soporte mejorado para ajax y skinnability.

Véase también:

 45
Author: BalusC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:46:57

Los parámetros de url también se pueden tratar como parámetros de solicitud para que también pueda acceder a través de

FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap()
 21
Author: user1415890,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-25 17:43:48

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

@Inject @Param
private String key;

@Inject @Param
private Long id;
 4
Author: Toumi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-02 11:44:45