4

我正在开始一个新的相当大的 web 应用程序,并且我正在使用 Spring MVC 来实现完整的 MVC 架构,我真的不想改变它。最重要的是,我正在寻找一种视图技术,并最终与 JSF 关闭,因为 JSF/facelets 在官方 EE 规范中,这意味着它们将成为未来。再加上主要的面孔在实现良好的用户界面方面看起来很有希望。我知道 JSF 是一个 MVC 框架,我只想利用它的视图部分来减少开发时间,同时实现良好且灵活的响应式 UI

但是我浏览了 StackOverflow 本身的几篇文章,这些文章禁止使用 Spring MVC + JSF。比如这个

这个问题在 2011 年得到了解答,现在新的 Java EE 规范也发布了,并且发生了许多变化。这点仍然是我们不应该使用 JSF+Spring MVC 吗?如果是真的,那么替代品是什么。一个对我来说看起来不错的选择是Thymeleaf,但唯一让我困扰的是忽略官方规范是个好主意吗?

4

1 回答 1

7

JSF 可能可以与 Spring MVC 集成(我不太确定,请参阅答案末尾的链接),但它看起来不太适合我。 主要是因为 JSF 是基于组件的,而 Spring MVC 是基于动作的。在 Spring MVC 中,控制器进行处理并将结果传递给任何呈现视图的对象(jsp、html、thymeleaf、apache tile 等)。Thymeleaf 是一个不错的选择,我喜欢它的模板方法。

我建议使用其他替代方法来代替 JSF:

  1. JS 框架:

    我个人更喜欢在我的项目中使用它,并且有很多选项可供选择,例如 jQuery/jQuery UI、ExtJS 等来创建视图。您可以将这些组合起来,让它们的元素与 Bootstrap 等流动框架一起工作,以便它们在所有屏幕尺寸上都表现良好(不确定 PrimesFaces/RichFaces 组件在所有设备上的表现如何)

  2. 编译为 JS 的框架:

    在这里,您有两个不错的框架可供选择 - Vaadin 和 GWT。我只使用了 Vaadin 而不是 GWT,所以不会对此发表太多评论。如果您不想直接使用 javascript,请选择此选项。

并不是说只有使用官方的 Java EE 规范才能与未来保持同步。HTML5、JS 框架等与 JSF 一样是未来,甚至更多!当然,最近的 JSF 看起来也不错(我还没有用它编写任何生产代码,不过已经在业余项目中探索过它)但是你最好将它与 PrimesFaces/RichFaces 一起使用,而不是将它与 Spring MVC 结合使用。

在中间立场上,您可以使用 Facelets 而不是 Thymeleaf 在 Spring MVC 中模板化视图。另一方面,您可以将 JSF 与 Spring DI 一起使用,但正如我之前所说,不要将 JSF 及其组件库与 Spring MVC 混合使用。

更新:以防万一您绝对想尝试,这里有一些链接:

于 2013-10-05T08:05:40.250 回答