Pregunta

Tengo una situación, tengo un bean de sesión con la lista, la lista muestro en la tabla de datos HTML. Cuando el usuario pulsa la URL desde el navegador o href normal, tengo que mostrar todos los registros. Existe una disposición para buscar los datos también, en las que tengo para mostrar la lista filtrada. Ahora, después de que un usuario ha realizado la búsqueda, la lista contiene registros filtrados y después de hacer esto que sale de la página a otra, y ahora, si el usuario pulsa la URL o utiliza el menú para volver a esta página, ya que tengo esta lista en bean de sesión, todavía tengo la lista filtrada.

Dado que no hay una acción predeterminada en JSF 1.1 o 2.0 preRenderView concepto, es difícil borrar la lista y obtener datos no filtrados (todos los resultados) de nuevo. trucos incluso en getList () método a prueba para realizar la tarea.

Me han planificado el uso del oyente fase, como cuando un usuario llega a una página a través de href o golpe url en el navegador, invoque fase de aplicación no sucede. Puedo alternar variable booleana en mi bean de sesión y en getList () puedo realizar algún truco para comprobar que era url, golpe href o botón de comando.

Espero haber sido claro. En resumen tengo que identificar en mi grano de si la solicitud proviene directamente de href, navegador o una acción. Si los registros del filtro acción de búsqueda de la tabla de datos si no se mantienen caché lista y seguir mostrando todo el tiempo que la búsqueda no se hace.

Sólo me guía si estoy haciendo las cosas de manera correcta o pensar demasiado o puede ser hecho en forma mucho más eficiente.

Gracias de antemano. la plataforma es así JSF 1.1 en WebLogic Portal 10.3 .....

¿Fue útil?

Solución

acciones 1.x JSF utilizan por el método POST defecto. Los enlaces directos / marcadores / etc son por el método de la naturaleza GET. Como no hay ResponseStateManager#isPostback() o FacesContext#isPostback() en JSF 1.1, usted tiene que determinar el método de la petición a sí mismo:

HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest();
boolean postback = "POST".equalsIgnoreCase(request.getMethod());

o detectar un determinado parámetro en el mapa de solicitud de parámetros, pero no puedo decir de la parte superior de la cabeza que se desea comprobar. Tienes que determinar por sí mismo.

boolean postback = facesContext.getExternalContext().getRequestParameterMap().containsKey(SOME_KEY);

Si es postback true, a continuación, una acción JSF se ha invocado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top