es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Identificación única para un bean JSF con alcance de vista en todas las solicitudes ajax?

Estoy trabajando (principalmente) con beans @ViewScoped @Named Faces (javax.faces.view.ViewScoped y javax.inject.Named) y quisiera saber si desde ServletRequest (o HttpServletRequest) puedo diferenciar entre dos instancias diferentes del mismo bean dentro de un javax.servlet.Filter.

Por ejemplo, un usuario abre la misma página en dos pestañas diferentes, pero ambas tienen el mismo SessionID a través de la llamada httpRequest.getSession().getId(). Actualmente, esto no me es útil.

Alternativamente, tengo acceso al ID de hilo, pero esto cambia con cada llamada ajax, y necesito mantener algo único solo para la instancia del backing bean en todas las llamadas… hasta que el bean sea destruido.

Entonces, algo como esto (esto no funciona, pero espero ilustrar mi necesidad)

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException 
{
    try 
    {
        HttpServletRequest httpRequest = (HttpServletRequest) request;

    // no es código real, pero esto es lo que estoy buscando;
    // obtener un identificador único solo para esta instancia del bean que se mantiene igual en todas las solicitudes ajax
    String beanId = request.getCurrentBackingBean.getInstanceId(); 
    ...
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Es posible diferenciar entre dos instancias diferentes del mismo bean dentro de un javax.servlet.Filter utilizando ServletRequest (o HttpServletRequest).

    Se puede obtener un identificador único para la instancia del bean llamando a request.getCurrentBackingBean.getInstanceId (). Este identificador se mantendrá igual en todas las solicitudes de ajax hasta que se destruya el bean.

Comments are closed.