java - JSF 2.0 Spring bean 注入(inject)

标签 java spring jsf-2

我正在使用以下 spring 的 jar :

spring-web-2.5.5.jar
spring-context-2.5.5.jar
spring-core-2.5.5.jar
spring-orm-2.5.5.jar
spring-support-2.0.8.jar
spring-security-taglibs-2.0.3.jar
spring-security-acl-2.0.3.jar
spring-security-core-2.0.4.jar
spring-aop-2.5.5.jar
spring-jdbc-2.5.5.jar
spring-tx-2.5.5.jar

问题是从 JSF 1.2 迁移到 JSF 2.0 bean 后,在 faces-context 中定义的 bean 无法注入(inject)到具有 session 范围的托管 bean 中。例如:

<managed-bean>
    <managed-bean-name>bannersController</managed-bean-name>
    <managed-bean-class>jaxp.com.controller.BannersController</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
        <managed-property>
            <property-name>bannerDao</property-name>
            <value>#{bannerDao}</value>
        </managed-property>
</managed-bean>

<bean id="bannerDao" class="jaxp.com.db.dao.BannerDaoImpl"
    scope="prototype">
    <property name="sessionFactory" ref="sitePartnerSessionFactory" />
    <property name="dataSource" ref="sitePartnerDataSource" />
</bean>

当我将 bean 的范围替换为 session 时,它会正常工作。但现在,托管属性只是空的。在我们迁移到 JSF 2.0 之前它就已经可以工作了。出了什么问题以及如何修复?

UPD:如果我将托管 bean 范围设置为查看范围,它也可以正常工作/

最佳答案

JSF bean :

inject spring service
@ManagedProperty("#{handlerService}")
private HandlerService handlerService = null;
///add setter
Spring service:

@Service("handlerService")
@Component
public class HandlerService {
    @Autowired
    private DomainService domainService;

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

 <context-param>
        <param-name>contextClass</param-name>
        <param-value>
            org.springframework.web.context.support.AnnotationConfigWebApplicationContext
        </param-value>
    </context-param>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>com.myspringconfgigclass.CommonCoreConfig</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>  

关于java - JSF 2.0 Spring bean 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27107503/

相关文章:

java - 如何测试使用 HttpServletRequest 的休息服务?

java - Eclipse复制/粘贴整行键盘快捷键

java - 使用 Thymeleaf 和 Spring Boot 在表中实现一个按钮,该按钮从表中返回数据

java - 如何将特定的 ExecutorService 与 @Async 一起使用?

javascript - 单击 JSF 表时打开一个新页面

java - 从包含字母和数字的字符串中提取所有数字

java - 如何直接调用 JAXB XMLAdapter

java - 服务验证: throw an exception if validation failed

java - 在构造函数或 @PostConstruct 方法中设置消息 - 可能吗?

java - 没有调用任何集合的 FacesComponent