mvc formulario form example ejemplo docs spring jsp jsf spring-mvc primefaces

formulario - spring mvc netbeans



Usando JSF como tecnología de visualización de Spring MVC (3)

Estás cometiendo un error conceptual. JSF no es una tecnología de visualización. JSF es un marco MVC. Exactamente como Spring MVC, aunque tienen una ideología diferente; JSF es MVC basado en componentes y Spring MVC es MVC basado en solicitudes. Por lo tanto, son competidores completos. No puedes mezclarlos. Debes elegir uno u otro. En cambio, JSP y Facelets son verdaderas tecnologías de visualización. Desde Java EE 6 (diciembre de 2009), JSP está en deprecated y reemplazado por Facelets (XHTML) como tecnología de vista predeterminada para JSF.

Puede usar Spring MVC con tecnología de visualización JSP . También puede usar Spring MVC con la tecnología de vista Facelets (y muchos otros ). Pero no puede usar Spring MVC con componentes JSF y mucho menos con bibliotecas de componentes JSF como PrimeFaces. Los componentes de salida JSF pueden funcionar, pero los componentes de entrada JSF no funcionarán en absoluto. Spring MVC ya tiene sus propias etiquetas <form:xxx> para la entrada. Incluso si los mezcla, terminará con la mitad de la funcionalidad de ambos marcos en una base de código mezclada y confusa. Esto no tiene ningún sentido. Si todo lo que quiere es usar la misma interfaz de usuario que PrimeFaces, solo tome la interfaz de usuario de jQuery . También es exactamente lo que PrimeFaces usa bajo las sábanas. PrimeFaces es una biblioteca de componentes JSF basada en jQuery.

Desde el otro lado, también puede ser muy bueno confundir Spring IoC / DI con Spring MVC. Spring IoC / DI es a su vez usable junto con JSF. Puede reemplazar el recurso de @Autowired gestionados de JSF ( @ManagedBean y sus amigos) por Spring Bean Facility ( @Component y sus amigos), generalmente con el único propósito de utilizar @Autowired en un bean de respaldo JSF. Pero eso es todo. El ciclo de vida del marco JSF MVC, los componentes JSF y la tecnología de visualización permanecen sin cambios. El equivalente estándar de Java EE sería usar CDI (y EJB ).

La misma historia se aplica a Spring Security. Puede usarlo junto con JSF; sin embargo, no debe seguir la documentación / ejemplos específicos de Spring Security + Spring MVC para configurarlo, sino solo Spring Security + JSF. Tenga en cuenta que las restricciones de seguridad de Spring en las acciones comerciales solo funcionan cuando usted reemplaza la instalación de beans gestionados de JSF por la instalación de bean gestionada de Spring. Entonces, eso aún requeriría un "Integrate Spring in JSF" como se describe en el párrafo anterior. El equivalente estándar de Java EE de todo esto usaría la seguridad administrada por contenedor (JAAS / JASPIC) a través de entradas de <security-constraint> en web.xml .

La misma historia también se aplica a Spring WebFlow. También solo necesita asegurarse de que está utilizando la versión más reciente de Spring WebFlow, ya que las versiones anteriores causan conflicts cuando se usan junto con múltiples bibliotecas de componentes JSF. Además, desde JSF 2.2, se introdujo la nueva característica Faces Flows como parte de la API Java EE estándar, por lo que básicamente hace que Spring WebFlow sea superfluo.

Luego está Spring Boot. Esto no tiene un equivalente directo en Java EE. Spring Boot básicamente le permite ejecutar una aplicación Java EE usando una clase de aplicación Java simple con un método main() "de una manera fácil y abstracta". Sin Spring Boot, seguramente es posible (de lo contrario, Spring Boot nunca hubiera existido), solo requiere un poco más de configuración ya que debe tener en cuenta los detalles específicos del servidor en función de su documentación. Por ejemplo: Undertow y Jetty .

Volviendo a JSF y Spring MVC, si es realmente necesario, puede ejecutar Spring MVC y JSF de forma segura uno al lado del otro en la misma aplicación web, pero no interoperarán en el servidor. Ellos correrán completamente independientemente. Como mucho, se tocarán entre sí en el lado del cliente, si sucede que algo de JavaScript en una página HTML generada por JSF pasa a invocar una llamada al servicio web REST basada en Spring en la misma aplicación web. Pero ese servicio web de Spring no necesitaría / tendría que saber nada sobre JSF para responder en consecuencia. El equivalente estándar de Java EE de ese servicio web Spring REST es JAX-RS .

El próximo Java EE 8 vendrá con un nuevo framework MVC basado en solicitudes, llamado simplemente " MVC ", basado en las lecciones de JSF y Spring MVC, reemplazando a Spring MVC y proporcionando una alternativa estándar a JSF.

Ver también:

Actualmente estoy implementando un pequeño Spring MVC PoC, y me gustaría utilizar JSF como tecnología de visualización, ya que la mayoría de las personas de mi empresa están acostumbradas a un entorno J2EE con Primefaces.

¿Spring MVC 3 es compatible con JSF, o simplemente JSP? He leído varios artículos mezclando los dos.

Mi necesidad es crear una interfaz de usuario atractiva. ¿Hay una manera simple de hacer esto usando Spring MVC con JSP como tecnología de visualización?

Nuestra aplicación usa horarios / calendarios en páginas múltiples. Básicamente es una aplicación de gestión del tiempo


Spring MVC y JSF realmente no se mezclan. Puede usar JSF para las cosas relacionadas con la vista y tener Spring manage y wire the backed (servicios, daos etc.). Pero tratar de hacer coincidir @Controllers con páginas JSF no es algo que realmente funcione bien (al lado de eso, ambas son solicitudes de pilas diferentes basadas en componentes).

Para integrar Spring con JSF, deberá agregar SpringBeanFacesELResolver a su faces-config.xml. Eso buscará beans del contexto de la aplicación Springs. Para que esto funcione, debe usar anotaciones JSF simples y no anotaciones basadas en CDI.