복붙노트

[SPRING] JSF Managed Beans에 주입 된 스프링 빈

SPRING

JSF Managed Beans에 주입 된 스프링 빈

문제점 설명 : JSF 백업 빈에 대한 Managed-Property로 정의 된 삽입 된 Spring bean이 인스턴스화되지 않습니다. 내가 Managed Bean을 조사 할 때 항상 그 값은 null입니다.

JSF Managed Bean은 Spring에서 applicationContext를 읽지 않을 것입니다. 나는 백킹 빈에서 FacesContext를 사용하여 빈을 수동으로 추출 할 수 있으며 빈을 찾는다.하지만 FacesConfig를 통해 주입하려고 할 때 항상 null이 나온다. 나는 그것을 통합하는 방법 아래에 내 단계를 포함 시켰습니다. 어떤 제안?

빙상 1.85

JSF 1.2 (얼음면 서블릿을 통해)

봄 3.0

Websphere 7.5 (어느 3.5 이클립스 일까?)

    <listener>
    <display-name>SpringListener</display-name>
    <icon>
        <small-icon>small.gif</small-icon>
        <large-icon>large.gif</large-icon>
    </icon>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/SpringConfig/SpringHelloWorld.xml
    </param-value> 
</context-param>

org.springframework.web.jsf.DelegatingVariableResolver

   <managed-bean>
    <managed-bean-name>testData</managed-bean-name>
    <managed-bean-class>src.test.TestData</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    <managed-property>
        <property-name>spring3HelloWorldBean</property-name>
        <value>#{spring3HelloWorldBean}</value>
    </managed-property>
</managed-bean>
<bean id="spring3HelloWorldBean" class="src.test.Spring3HelloWorld" />

미리 감사드립니다.

해결법

  1. ==============================

    1.우선, DelegatingVariableResolver가 1.1 이후의 모든 JSF 버전에서 사용되지 않으며 1.2를 사용하고 있으므로 다음 구성을 사용하시기 바랍니다.

    우선, DelegatingVariableResolver가 1.1 이후의 모든 JSF 버전에서 사용되지 않으며 1.2를 사용하고 있으므로 다음 구성을 사용하시기 바랍니다.

    <application> 
    <el-resolver> 
    org.springframework.web.jsf.el.SpringBeanFacesELResolver 
    </el-resolver> 
    </application>
    

    희망이 도움이됩니다.

  2. ==============================

    2.SpringBeanFacesELResolver를 사용하는 것 외에도 주석을 사용함으로써 봄부터 더 많은 이점을 얻을 수 있습니다. 따라서 관리되는 bean을 xml로 정의하는 대신 다음을 수행하십시오.

    SpringBeanFacesELResolver를 사용하는 것 외에도 주석을 사용함으로써 봄부터 더 많은 이점을 얻을 수 있습니다. 따라서 관리되는 bean을 xml로 정의하는 대신 다음을 수행하십시오.

    @Controller
    public class FooBean {
        @Inject
        private SpringService service;
        ....
    }
    
  3. from https://stackoverflow.com/questions/6192914/spring-beans-injected-into-jsf-managed-beans by cc-by-sa and MIT license