弹簧面没有弹簧流动

时间:2011-06-21 09:17:01

标签: java spring spring-mvc jsf-2 java-ee-6

我正在开始一个新的JSF(2)项目。我意识到纯粹的JSF有一些限制,我打算在春天放弃。 JSF在春天是一种相对较新的方法(在stackoverflow中甚至没有标签spring-faces :-)),jsp是经典的方式。
我需要对技术堆栈进行最佳调整。
1)我是否也需要使用弹簧网流量? 2)仅仅使用弹簧面(这似乎是网络流程的一部分)+ spring mvc + JPA是否可行? 3)这样的配置有什么好的例子吗?

2 个答案:

答案 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 documentationAPI 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