usando sigue entre diferencias diferencia java jsp jsf

java - sigue - jsp vs jsf diferencias



Mezclando jsp y jsf (5)

¿Has buscado usar facelets? Le permite deshacerse de las diferencias JSF / JSP completas (es un controlador de vista alternativo y superior).

También admite una gran semántica en tiempo de diseño con la etiqueta jsfc ...

<input type="text" jsfc="#{SomeBean.property}" class="foo" />

se traduce internamente a las cosas correctas de JSF, para que pueda trabajar con sus herramientas existentes.

Elaboraré algo. Jsf es extremadamente doloroso para trabajar desde la perspectiva del diseñador, algo así como tratar de dibujar mientras te atan las manos a la espalda, pero es bueno para maquillar formularios y enumerar muchos datos. Por lo tanto, los sitios que estamos creando en mi compañía son jsf admin pages y jsp user pages. El problema ocurre cuando las páginas de usuario tienen algunas formas complicadas y cosas y jsf comienza a funcionar.

Aquí está la pregunta: estoy en la página jsp pura. Necesito acceder a alguna página jsf que use session bean. ¿Cómo puedo inicializar ese bean? Si estuviera en la página jsf, podría tener algún commandLink que prepare datos. Lo único que se me ocurre es tener una página jsf ficticia que haga el trabajo y me redirija a la página jsf necesaria, pero eso es feo, y no quiero terminar con 50 páginas ficticias. Prefiero encontrar algún mecanismo para reiniciar el bean que ya está en sesión con algunos parámetros deseados.

Editar: algunos detalles más. En esta situación específica, tengo pruebas completas o filtradas. Es una misma prueba con la misma lógica y todo, excepto si se filtra la prueba, debería eliminar algunas preguntas según las respuestas. Al hacer clic en un enlace, debe iniciar una prueba solicitada en uno de los dos modos. Los enlaces son partes del árbol del menú principal y son visibles en muchas páginas jsp de hermanos. Mi tarea es tener 4 enlaces: testA completo, testA filtrado, testB completo, testB filtrado, que todos los clientes potenciales en la misma página jsf y TestFormBean deben reiniciarse en consecuencia.

Editar: He investigado un poco los facelets, y si bien no me ayudará ahora, definitivamente lo tendré en cuenta para el próximo proyecto.


Crea un manejador de etiquetas JSP personalizado. Luego puede recuperar el bean del alcance de la sesión y luego inicializarlo sobre la marcha. Mira este tutorial para más detalles.


En realidad, he resuelto esto eliminando bean de la sesión, por lo que debe generarse de nuevo cuando se llama a la página jsf. Luego recojo los parámetros de obtención de una solicitud en el constructor.


Para resolverlo, probablemente crearía un fragmento JSF que solo incluye su formulario, luego usaría una etiqueta para incluirlo en mi página JSF.

Sin embargo, esa solución es probablemente un poco frágil dependiendo de su entorno.

EDIT: vea la respuesta de Chris Hall, FacesContext no está disponible fuera del FacesServlet.


Puede recuperar un bean administrado dentro de una biblioteca de etiquetas usando algo como esto:

FacesContext context = FacesContext.getCurrentInstance(); Object myBean = context.getELContext().getELResolver().getValue(context.getELContext(), null, "myBeanName");

Sin embargo, necesitaría usar la biblioteca de etiquetas desde una de sus páginas JSF. FacesContext.getCurrentInstance () devuelve null cuando se llama fuera de FacesServlet.