Springを使用してマネージドBeanをjsfに提供しようとしています。スプリングの使用法をfaces-config.xmlで構成することにより、スプリングを使用している場合でも、@ ManagedBeanがJSFコンテナーによって取得され、JSFのELをマネージドBeanにリンクすると想定します。
春は豆を提供しますが、豆の範囲を管理するのは誰ですか?
Beanのアノテーションに従って、リクエストスコープにしようとしましたが、機能しません。
@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 {
実際、以前はプレーンJSFを使用していましたが、@ManagedBeanと@RequestScopedはうまく機能していました。スプリングを使用して統合しようとしたため、スコープが機能していません。
spring configでBeanスコープを設定しようとしましたが、Springのコンテキスト(シングルトンとプロトタイプ)では期待どおりに機能しますが、Webリクエストのコンテキストでは機能しません。
JSFがスコープを管理することを期待して、上記の@Scopeおよび@Controllerアノテーションを使用する必要がないようにしようとしていましたが、そうではないようです。
以下は、Spring configとMyHelloBeanのファイルスニペットで、おそらくコミュニケーションを改善するのに役立ちます。
<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;
上記のMyHelloBeanを参照してください。私はSpringDIを使用して、SpringFineによって設定されるhelloBeanを設定しています。@ManagedBeanをコメントアウトしましたが、春には無視され、JSFは処理しないので、そのままにしておくことができますが、安全のために、JSFが処理しないようにコメントアウトしました。
完了するには、以下のfaces-configを使用して、春の使用法をアクティブにします。
<el-resolver>
org.springframework.web.jsf.el.SpringBeanFacesELResolver
</el-resolver>
よろしく、
みてん。