Я пытаюсь использовать Spring для предоставления управляемых компонентов JSF. Я предполагаю, что @ManagedBean будет выбран контейнером JSF, чтобы связать EL в JSF с управляемым компонентом, даже когда я использую Spring, настроив использование Spring в Faces-config.xml.
Весна должна обеспечить бобы, но теперь кто управляет объемом бобов?
Я попытался использовать аннотацию 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, объем не работает.
Я даже пытался установить область действия bean-компонента в конфигурации Spring, но они работают, как и ожидалось, в контексте Spring (синглтон и прототип), но не в контексте веб-запроса.
Я пытался избежать использования вышеуказанных аннотаций @Scope и @Controller, надеясь, что JSF будет управлять областью действия, но не похоже.
Ниже приведены фрагменты моих файлов для конфигурации Spring и 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. Я использую Spring DI для установки helloBean, который устанавливается Spring Fine. Я прокомментировал @ManagedBean, который, я думаю, я могу оставить там, так как весной он будет проигнорирован в любом случае, и JSF не собирается его обрабатывать, я думаю, но на всякий случай я прокомментировал его, чтобы JSF не обрабатывал его.
Чтобы завершить, я использую ниже в Faces-config, чтобы активировать использование весны.
<el-resolver>
org.springframework.web.jsf.el.SpringBeanFacesELResolver
</el-resolver>
С уважением,
Митен.