Spring 3 的最佳视图层是啥?

Posted

技术标签:

【中文标题】Spring 3 的最佳视图层是啥?【英文标题】:What is the best view layer for Spring 3?Spring 3 的最佳视图层是什么? 【发布时间】:2011-01-24 02:06:23 【问题描述】:

我正在研究在我们的新项目中与 spring 一起使用的表示层。我来自 php+Prado,想转向像 Prado 这样简单且比 PHP 更强大的东西。

我喜欢 Spring 3 和 Spring MVC。学习和开始使用它非常简单。但我正在寻找比简单 jsp 更好的“视图框架”。我需要简单的组件,如支持数据网格、列表、树的拖放。我已经创建了 SpringMVC+Spring Web Flow 2 + Spring Faces + JSF 配置,但是在那里创建简单的东西非常复杂。我需要一些更简单的东西。

你有什么想法吗?

【问题讨论】:

对于那些感兴趣的人 - 获胜者是 Vaadin 我知道这是一篇旧帖子,但您能详细说明为什么它胜过其他帖子吗? 它之所以获胜,主要是因为不需要 html 和 CSS 知识,并且您可以像在 Swing 中一样用 Java 构建丰富的、类似桌面的界面。它完美地满足了我们的需求。 完美。谢谢回答。 :-) Vaadin 网站需要修复,目前有很多服务器错误。 【参考方案1】:

在 Java EE 中,目前只有两种视图技术:JSP 和Facelets。 JSP 已经过时了,即将退休。 Facelets 更新更好,并且在设计时考虑到了 JSF,因此它们可以顺利地相互配合。

但 Spring MVC 和 JSF 实际上是竞争对手。他们都有大致相同的目标和目的。您应该使用其中一种,不要混淆它们。在一个页面中混合两个或多个 MVC 框架不会完美地工作。但是,您可以将 Spring 作为 DI 和/或 Security 框架与 JSF 作为 MVC 框架结合使用。 Spring 提供的不仅仅是 MVC。

basic JSF Component implementation 中并非所有组件都支持,如 Datagrids、Lists、Trees 拖放。为此,您需要一个组件库,例如 PrimeFaces。

另见

Why Facelets is preferred over JSP as the view definition language from JSF2.0 onwards? Using JSF as view technology of Spring MVC JSF implementations and component libraries。

【讨论】:

是否可以在没有所有 Spring Web Flow 魔法的情况下创建一个前面有 Facelets 和 Spring 行为的应用程序? 我不做 Spring,所以无法详细回答可靠性问题。 决定是:JSF over Spring 3 没有 Spring MVC 和 Spring Web Flow。现在的问题是:RichfAces 或 Icefaces 或 ...【参考方案2】:

过去 3 年我一直在使用 Jboss Seam + Richfaces,发现它们都很有用,但如果我是你,我也会查看 Play Framework。它具有Spring support 并与jQuery UI 或ExtJS 结合使用,您将获得一个非常简单但高效的环境。从速度的角度来看,这肯定让人想起用 PHP 进行开发。

【讨论】:

【参考方案3】:

如果您想要那些丰富的控件,那么某种 JSF 框架就是您的最佳选择。不过,标准的 JSF 框架设计得相当糟糕且不够优雅。

您应该看看JBoss Seam 作为替代方案。它是一个使用 EJB3 和 JSF 的自上而下的 Web 框架,而且它的集成度非常好,使得 JSF 比其他方式更容易。

不过,它不是基于 Spring 的,所以如果您的心意是 Spring,那么您需要查看其他 JSF 实现,例如 RichFaces。

Spring WebFlow 对你来说可能根本不需要,所以除非你有充分的理由,否则我会忽略它。

【讨论】:

我已经完成了基于 Jboss Seam 的大型应用程序。这是一个伟大的、强大的框架——没错。但是这次我需要一些更简单的东西,没有整个 EJB 容器等......但我同意 JBoss Seam 现在看起来是最好的企业框架。 Vanilla JSF 只是不附带某种 CSS 皮肤。它所做的只是渲染纯 HTML,您还必须自己使用 CSS 设置样式。这并没有让它变得丑陋。 @BalusC:我指的是框架意义上的丑陋,而不是外观意义上的丑陋。 啊,是的,现在说得通了。 Seam 在这个观点上确实很棒。【参考方案4】:

Jboss Seam 提供您想要的一切。它适用于 Spring,但它本身提供了许多内置功能。

【讨论】:

JBoss Seam 使用 JSF 作为视图层 我猜它不再相关了!来自 Seam 网站,“Seam 3 的积极开发已被 Red Hat 停止。许多项目已转移到 Apache DeltaSpike,其他项目已被吸收到不同的项目中。”【参考方案5】:

一个非常强大且轻量级的基于MVC动作的框架是Stripes,试试吧!

【讨论】:

我看起来更像 RichFaces 好吧,这是一个完全不同的故事。 Stripes(如 Spring MVC)是基于动作的,而 JSF 是基于组件的。如果您使用 JSF,还可以考虑从 Spring 切换到 JBoss Seam/Weld。如果您选择基于动作的框架,imo Stripes 是最好的。如果你更喜欢基于组件的框架,我特别喜欢 Primefaces (primefaces.org) 和 Openfaces (openfaces.org/#1) 库。 如果您打算使用 JSF,还可以考虑从 Spring 切换到 JBoss Seam / Weld,因为它们具有更紧密的集成。【参考方案6】:

Angular 或 GWT 也可以是适当使用的替代方案。

【讨论】:

【参考方案7】:

由于您来自 PHP,JSP 可能是比 JSF 更合适的视图技术

如果必须使用 Spring,请使用 Spring 4(不是 3)

检查 Spring Boot 以获得更快速的开发等。

如果您正在开发 Web 应用程序,并且 SEO 并不重要,我个人会使用 javascript 框架 + Restful Web 服务进入单页根目录。我注意到您提到了 Spring WebFlow + Components。我的意见是这些太重了

如果 SEO 很重要,请查看带有 SSP(Scala 服务器页面)的 Play Framework(我更喜欢 Scala 版本)。

【讨论】:

以上是关于Spring 3 的最佳视图层是啥?的主要内容,如果未能解决你的问题,请参考以下文章

添加渐变作为视图顶层的最佳方法是啥?

向我的 UIView 添加阴影的最佳方法是啥

Spring Framework 中的 DAO、DTO 和 Service 层是啥?

在 iOS 中使用图层和部分渲染来提高速度的最佳方法是啥

业务逻辑和数据访问层的循环依赖

gis缩放至图层是灰色的