私はアノテーションが初めてで、jsf(2.0) spring (3.1) 統合を試みています。2 つのフレームワークを統合できましたが、JSF に viewScope がありません。アノテーションを使用して jsf managedBean に自動的に Spring Bean を注入したいのですが、Spring はセッション Bean とリクエスト スコープ Bean しかサポートしていないため、できません。
Bean を取得する Util クラスを使用します。"SprigUtil.getBean('bean')". 必要に応じて春豆を手動で取得します。
私はこのようないくつかをしたい
@CustomAnnotation('beanTest')
private Bean bean;
したがって、Bean 属性は beanTest Bean で設定されます。
私の目的(春は別として)は、このようなことを行う方法を知ることです
@assign('House')
private String place;
そして、getMethod
取得する「ハウス」を呼び出すと。instance.getPlace()、「家」を返す
注: @Autowired については知っていますが、Spring-jsf 統合では ViewScope を使用できないため、使用できません。
ビュースコープを手動で実装することについて読みましたが、別のソリューションを試してみたいと思っています。
編集:
私の顔構成:
<?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 は注入されません (null です)