Diferencia entre revisiones de «JSF Con Spring»

De Dos Ideas.
Saltar a: navegación, buscar
(Página nueva: 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 ''...)
 
 
(No se muestran 3 ediciones intermedias de 3 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 7: Línea 9:
 
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:
 
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:
  
 +
<code xml>
 
  <listener>
 
  <listener>
 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
Línea 18: Línea 21:
 
     </param-value>
 
     </param-value>
 
  </context-param>
 
  </context-param>
 +
</code>
  
 
===faces-config.xml===
 
===faces-config.xml===
Línea 23: Línea 27:
  
 
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):
 
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):
 +
 +
<code xml>
 
  <faces-config>
 
  <faces-config>
 
     <application>
 
     <application>
Línea 41: Línea 47:
 
     </managed-bean>
 
     </managed-bean>
 
  </faces-config>
 
  </faces-config>
 +
</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.

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.


Ver también