我正在开始一个新的JSF(2)项目。我意识到纯粹的JSF有一些限制,我打算在春天放弃。 JSF在春天是一种相对较新的方法(在stackoverflow中甚至没有标签spring-faces :-)),jsp是经典的方式。
我需要对技术堆栈进行最佳调整。
1)我是否也需要使用弹簧网流量?
2)仅仅使用弹簧面(这似乎是网络流程的一部分)+ spring mvc + JPA是否可行?
3)这样的配置有什么好的例子吗?
答案 0 :(得分:3)
我正在使用JSF 2和Spring 3进行依赖注入等。
我不熟悉Web Flow而且我不使用它。
在您的faces-config.xml
中,您可以注册春季SpringBeanFacesELResolver
。
<el-resolver>
org.springframework.web.jsf.el.SpringBeanFacesELResolver
</el-resolver>
然后,您可以在JSF代码中访问Spring托管bean!
查看Spring documentation和API docs。
答案 1 :(得分:1)
如果您的应用程序中没有特定于向导的特定视图,我怀疑您实际上是否需要使用SWF。
最简单的解决方案实际上就是Sebi告诉你的那个 - 注册Spring EL Resolver并用适当的刻板印象(通常是@Controller
)和期望的范围标记你的控制器类。从那以后,您应该能够通过手动或自动装配获得对Spring管理的bean的引用。这就是它的全部 - 没有faces-config.xml
bean管理而没有“双IoC”开销。一旦它在Spring上下文中,管理控制器就可以通过#{}
EL符号从facelet轻松解除引用。
例如:
TestController.java:
@Controller("myController")
@Scope("request")
public class TestController {
@Autowired
private SomeSpringManagedBean someBean;
private String someViewProperty;
public String getSomeViewProperty() {
return someViewProperty;
}
public void setSomeViewProperty(String arg) {
this.someViewProperty = arg;
}
......
}
TestView.jspx:
<p:inputText value="#{myController.someViewProperty}" />
我们已经失去了大约2周试图将SWF与JSF 1.2结合在一起 - 只是发现一旦我们真正使用支持JSF 1.2的最新版本的IceFaces,IceFaces就有了一个功能/ bug令人讨厌的是它根本不会渲染视图并且在第5阶段陷入困境而没有抛出任何异常或报告任何有用的东西(该问题在未购买许可证时无法获得的1.8.2-GA版本的IceFaces中得到修复)
编辑:我注意到基本上是一个类似的SO线程here。