Diferencia entre revisiones de «JSF Con Spring»
(No se muestran 2 ediciones intermedias de 2 usuarios) | |||
Línea 1: | Línea 1: | ||
+ | [[Category:Spring Framework]] | ||
+ | [[Category:JSF]] | ||
[[Spring Framework]] trae un buen soporte para [[JSF]], de manera de poder declarar Managed Beans e inyectarle objetos manejados por Spring. | [[Spring Framework]] trae un buen soporte para [[JSF]], de manera de poder declarar Managed Beans e inyectarle objetos manejados por Spring. | ||
Línea 46: | Línea 48: | ||
</faces-config> | </faces-config> | ||
</code> | </code> | ||
+ | |||
+ | ''Nota: Si el value de la property tiene un punto entre los caracteres (por ejemplo flota.EspacialBo) se produce un error y no se inyecta el objeto.'' | ||
+ | |||
==Ver también== | ==Ver también== | ||
* [[JSF]] | * [[JSF]] | ||
* [[Spring Framework]] | * [[Spring Framework]] |
Revisión actual del 17:32 28 oct 2009
Spring Framework trae un buen soporte para JSF, de manera de poder declarar Managed Beans e inyectarle objetos manejados por Spring.
Esto se resuelve a través de la clase org.springframework.web.jsf.DelegatingVariableResolver, la cual se integra con JSF para resolver los atributos de los Managed Beans.
Contenido
[ocultar]Ejemplo
web.xml
Primero, como siempre, debemos declarar el Factory de Spring para que esté disponible en nuetra aplicación web. En el archivo web.xml se agrega el listener, referenciando a todos los XML de Spring que necesitemos:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:dosideas-web-business.xml,
classpath:dosideas-web-interceptors.xml,
classpath:dosideas-web-ejb.xml
</param-value>
</context-param>
faces-config.xml
Por último, declaramos un variable-resolver en el archivo faces-config.xml. Esto nos permitirá inyectar beans de Spring a los Managed Beans de JSF.
A continuación un ejemplo de faces-config.xml, junto a un Managed Bean al que se le inyecta un objeto "flotaEspacialBo" (declarado con ese nombre en algún archivo de Spring):
<faces-config>
<application>
<variable-resolver>
org.springframework.web.jsf.DelegatingVariableResolver
</variable-resolver>
</application>
<managed-bean>
<description>Controller para el listado de eventos</description>
<managed-bean-name>consultaLog</managed-bean-name>
<managed-bean-class>com.dosideas.web.managedbeans.InvasorBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>flotaEspacialBo</property-name>
<value>#{flotaEspacialBo}</value>
</managed-property>
</managed-bean>
</faces-config>
Nota: Si el value de la property tiene un punto entre los caracteres (por ejemplo flota.EspacialBo) se produce un error y no se inyecta el objeto.