为springbean分配注释



我是注释的新手,我正在尝试jsf(2.0)spring(3.1)集成,我可以集成这两个框架,但我在jsf中没有viewScope,因为它不可用。我想使用注释在jsf-managedBean中自动注入springbean,但我做不到,因为spring只支持会话和请求范围bean。

我使用一个检索bean的Util类"SprigUtil.getBean('bean')";。并在需要时手动检索春豆。

我想做一些像这样的

@CustomAnnotation('beanTest')
private Bean bean;

因此,bean属性将使用beanTestbean进行设置。

我的目标(抛开春天不谈)是知道如何做一些类似的事情

@assign('House')
private String place;

并且当我调用CCD_ 1时;House";。instance.getPlace(),返回'House'

注:我知道@Autowired,但我不能使用它,因为ViewScope在spring-jsf集成中不可用。

我读过关于手动实现视图范围的文章,但想尝试不同的解决方案。

编辑:

我的FacesConfig:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd"
    version="2.1">
    <application>
        <el-resolver>             org.springframework.web.jsf.el.SpringBeanFacesELResolver
        </el-resolver>
    </application>
</faces-config>

和我的appContext

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.1.xsd">
 
    <context:component-scan base-package="*" />
 
</beans>

我的春豆

@Component
public class ProductService{
}

我的托管Bean

@Component
@Scope("request")//I need to use @Scope("view") but it doesn't exist
public ProductBean implements Serializable{
@Autowired
ProductService productoService;
}

如果我使用jsf注释@ManagedBean和@ViewScoped productService未注入(为空)

您可以使用@ManagedProperty将springbean注入视图范围的托管bean

对于名为B 的弹簧组件

@ManagedProperty("#{B}")
private B b;
public void setB(B b) {
this.b = b;
}

应该起作用。

至于你发布的代码,Component是一个Spring注释,要使用ViewScoped,你必须用ManagedBean注释来注释你的类:

@ManagedBean
@ViewScoped
public ProductBean implements Serializable {
@ManagedProperty("#{productService}")
private ProductService productService;
public void setProductService(ProductService productService) {
    this.productService = productService;
  }
 }

您可能想查看以下链接,以更好地了解JSF 2.0中的作用域JSF 2.0通信中的

相关内容

  • 没有找到相关文章

最新更新