Estoy tratando de usar la primavera para proporcionar frijoles administrados a jsf. Supongo que @ManagedBean será recogido por el contenedor JSF para vincular el EL en JSF con el bean administrado, incluso cuando uso el resorte configurando el uso del resorte en faces-config.xml.jsf 2,0 primavera 3 solicitud de alcance no funciona
Spring proporcionará los beans pero ahora ¿quién gestiona el alcance de los beans?
He intentado seguir anotación en beans para que se convierta en alcance de solicitud, pero no funcionan.
@ManagedBean(name="helloBean") //meant for JSF
@RequestScoped //meant for JSF
@Scope(value="request") //meant for spring
@Controller //meant for spring
public class HelloBean implements Serializable {
En realidad anterior que estaba usando JSF simple y @ManagedBean y @RequestScoped estaban funcionando bien. Ahora, cuando traté de integrar usando la primavera, el alcance no funciona.
Incluso he intentado configurar bean scope en spring config, pero funcionan como se esperaba en el contexto de la primavera (singleton y prototipo) pero no contexto de solicitud web.
Estaba tratando de evitar tener que usar la anotación anterior @Scope y @Controller esperando que JSF administre el alcance pero no parezca.
A continuación se muestra mi fragmento de archivo para la configuración de primavera y MyHelloBean, que probablemente ayudará a comunicarse mejor.
<bean id="helloBean" class="com.mkyong.common.HelloBean" init-method="init" />
<bean id="myHelloBean" class="com.mkyong.common.MyHelloBean" init-method="init" >
<property name="helloBean" ref="helloBean"></property>
</bean>
@ManagedBean
@RequestScoped
@Scope(value="request")
@Controller
public class MyHelloBean implements Serializable {
private static final long serialVersionUID = 1L;
//@ManagedProperty(value = "#{helloBean}")
private HelloBean helloBean;
ver en el anterior MyHelloBean estoy usando DI primavera para establecer helloBean la que consigue el sistema con una multa de primavera. He comentado @ManagedBean, que creo que puedo dejarlo allí ya que la primavera lo ignorará de todas formas y JSF no lo va a procesar, supongo, pero para estar seguro lo comenté para que JSF no lo procesara.
Para completar utilizo a continuación en faces-config para activar el uso del resorte.
<el-resolver>
org.springframework.web.jsf.el.SpringBeanFacesELResolver
</el-resolver>
Saludos,
Miten.
usted toda la razón. Pude agregar el scope = request a spring config y mantener mis beans jsf antiguos con sus anotaciones y funciona como se esperaba. Me confundieron con la anotación y el alcance en el lado de la primavera. Otra respuesta comparte algunas ideas más sobre el alcance y la inyección, pero creo que esta es una migración más simple y fácil hacia la integración de Spring en jsf. Conocía solo dos alcances para los frijoles primavera. ¿Dónde se enumeran estos otros ámbitos? La web de primavera (cargador de contexto) entiende estos nuevos ámbitos y, por lo tanto, tienen sentido en el contexto web de primavera. o son válidos para la primavera central también lo dudo? – Miten
[referencia alcance de primavera de la haba] (http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-scopes) – nobeh