Buscar
Social
Ofertas laborales ES

Foro sobre Java EE > problema con la sesión en JSF2.1

hola a todos,

tengo un problema con la sesión en JSF 2.X, es que cuando se vence la sesión los ajax dejan de responder, y por tanto no valida ni refresca.

recomendaron reenviar a la pagina de login y si reenvia el problema es que la pagina que tiene este problema es una pagina que puede ser accedida sin iniciar sesión porque es publica.

aquí tengo un pequeño fragmento para pruebas, este es el xhtml:

<h:form>
<h:outputLabel value="#{testBean.numero}" />
<p:inputText value="#{testBean.texto}" required="true" />
<p:commandButton value="actualizar"
update="@form" />
</h:form>

y este es mi bean:

@ManagedBean
@NoneScoped
public class TestBean {

private Integer numero;
private String texto;

/**
* Get the value of texto
*
* @return the value of texto
*/
public String getTexto() {
return texto;
}

/**
* Set the value of texto
*
* @param texto new value of texto
*/
public void setTexto(String texto) {
this.texto = texto;
}

/**
* Get the value of numero
*
* @return the value of numero
*/
public Integer getNumero() {
if (numero == null) {
Random generator = new Random();
numero = generator.nextInt();
}
return numero;
}

/**
* Set the value of numero
*
* @param numero new value of numero
*/
public void setNumero(Integer numero) {
this.numero = numero;
}

/**
* Creates a new instance of TestBean
*/
public TestBean() {
}
}

la unica libreria adicional que estoy usando es primefaces, que me recomiendan?

abril 17, 2012 | Registered Commentermontblack

Hola,

Este es para mi el gran defecto de JSF2, pues no es un manejo fácil ni trivial, como debería ser indicando alguna instrucción en el web.xml o en el faces-config.xml.

Yo lo he solucionado del siguiente modo:

He puesto este trozo de código en un fichero que es cargado en todas las páginas.
jsf.ajax.addOnError(function(errorData) {
//alert(errorData.status);
hideLoading();
sesionExpirada();
});

Donde hideLoading cierra la posible ventana abierta de "Cargando documento ..." y sesionExpirada me redirige a la ventana de login, indicando que la sesión ha terminado.

Ojo, este método tiene mucho peligro, pues cualquier error de ajax que sufras te va a salir por aqui, yo no he conseguido filtrar el error de sesión terminada con el resto, así que te recomiendo que mientras estés desarrollando comentes estas líneas de código.

Espero que te sea útil

mayo 3, 2012 | Registered Commentermarsim86