Pregunta

Voy a elaborar un poco.Jsf es una especie de extremadamente doloroso para trabajar con el diseñador de la perspectiva, algo en el rango de tratar de dibujar una imagen, mientras que tener las manos atadas en la espalda, pero es bueno para masticar las formas y la inclusión de muchas de datos.Así que los sitios que estamos haciendo en mi empresa son jsf de administración de páginas jsp y páginas de usuario.El problema se produce cuando el usuario las páginas tienen algunas formas complicadas y esas cosas y jsf comienza kickin' en.

Aquí está la pregunta:Estoy en puro página jsp.Necesito acceder a algunos de los jsf página que utiliza un bean de sesión.¿Cómo puedo inicializar que bean?Si yo estaba en jsf página, he podido tener algún commandLink que iba a preparar los datos.Única cosa que se me ocurre es tener ficticio de la página jsf que va a hacer el trabajo y redirigir me necesitaba página jsf, pero eso es feo, y no quiero terminar con 50 ficticio las páginas.Más bien me gustaría encontrar algún mecanismo para reinicializar bean que ya está en sesión con algunos querían parámetros.

Editar:algunos detalles más.En esta situación específica, tengo pruebas de que son ya sea total o filtrada.Es una misma prueba con la misma lógica y todo, excepto en caso de que la prueba se filtra, se debe eliminar algunas de las preguntas según las respuestas.Con un clic en un enlace, se debe iniciar una prueba solicitada en uno de los dos modos.Los enlaces son parte del menú principal del árbol y son visibles en muchos de los hermanos de las páginas jsp.Mi tarea es la de tener 4 enlaces:testA completo, testA filtrada, testB completo, testB filtrada, todas van en la misma página jsf y TestFormBean debe ser reinicializado en consecuencia.

Editar:Yo he investigado facelets un poco, y aunque no me ayuda ahora, definitivamente, voy a tener eso en mente para el próximo proyecto.

¿Fue útil?

Solución

Para resolver esta probablemente me cree una JSF fragmento que sólo incluye el formulario, a continuación, utilizar un <c:import> etiqueta para incluir en mi página JSF.

Que la solución es, probablemente, un poco frágil, dependiendo de su entorno, aunque.

EDITAR:Ver a Chris Hall de la respuesta, FacesContext no está disponible fuera de la FacesServlet.

Otros consejos

has mirado en el uso de facelets?Se le permite deshacerse de todo el JSF / JSP diferencias (es una alternativa y superior de la vista controlador).

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

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

se traduce internamente para la correcta JSF cosas, así que usted puede trabajar con sus herramientas existentes.

Se puede recuperar un bean gestionado dentro de una biblioteca de etiquetas mediante algo parecido a esto:

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

Sin embargo, sería necesario el uso de la etiqueta de la biblioteca de uno de tus páginas JSF.FacesContext.getCurrentInstance() devuelve null cuando se llama fuera de la FacesServlet.

En realidad, he resuelto esto mediante la eliminación de bean de sesión, por lo que se tiene que generar de nuevo cuando jsf página se llama.A continuación, recojo obtener los parámetros de una petición en el constructor.

Crear un personalizado de etiquetas JSP controlador.Puede recuperar el bean de sesión ámbito de aplicación y, a continuación, inicializar sobre la marcha.Ver este tutorial para obtener más detalles.

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