JSP for Spring MVC视图层的替代方案

dig*_*oel 76 java jsp spring-mvc

我想从头开始创建一个新的应用程序,可能会使用Spring MVC和Spring Web Flow.Spring Roo创建的项目使用Spring MVC和Web Flow.什么是视图技术的一些很好的替代品,或者是带有Spring和JSTL taglib和jQuery的JSP的方法?

Sha*_*ood 53

我最近发现了Thymeleaf.

它看起来是JSP的完全替代品,并与Spring MVC集成.模板方法看起来更像HTML,对UI设计者来说可能更适合.他们有一个小写,可以并排比较两种解决方案.

  • Thymeleaf本身很棒,但与布局方言[布局方言](https://github.com/ultraq/thymeleaf-layout-dialect)一起,我喜欢它! (3认同)

Bal*_*usC 50

在标准Java EE API中,JSP的唯一替代方法是Facelets.到目前为止(2010),JSF是唯一本机支持Facelets的MVC框架.

Spring MVC支持开箱即用的JSP,但它有一个可配置的视图解析器,无论如何都允许你使用Facelets.其他候选者是第三方模板框架,如Velocity,FreemarkerThymeleaf,可以配置为Spring MVC的视图技术.Spring文档包含Velocity和Freemarker的集成示例.


dig*_*oel 17

我最近开始使用纯HTML和jQuery进行演示,只使用Spring MVC创建JSON视图.

到目前为止,它还是很顺利,即使我必须完成javascript工作,它还可以让我更轻松地与我的设计人员进行交互,并且当他进行更改时更快的周转时间,因为我不必将他的HTML转换为我的JSP.评审团仍然对整体网站的可维护性有所了解.


rom*_*oll 16

Springs文档还建议Freemarker.Freemarker是(据我所知)快速并且具有一些Spring功能的集成,如绑定.


mon*_*onj 16

您可以在Spring MVC上拥有任意数量的视图技术.我有freemarker和JSP视图解析器.当我遇到一个在Freemarker中太复杂的视图(或者在JSP中更方便)时,我创建了一个JSP视图.例如,Spring JSLT在处理表单方面做得很好.为此,我使用JSP视图,但对于其他所有其他我有freemarker视图.

查看Spring MVC文档,了解如何配置多个视图解析器,基本上:

<bean name="freeMarkerViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
   <property name="cache" value="true"/>
   <property name="prefix" value=""/>
   <property name="suffix" value=".ftl"/>
   <property name="order" value="1"/> <!--NOTICE THE ORDER-->
</bean>

<bean id="jspViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
    <property name="order" value="2"/> <!--NOTICE THE ORDER-->
</bean>
Run Code Online (Sandbox Code Playgroud)


小智 9

Spring MVC提供了许多不同视图技术的集成.我建议使用FreeMarkerVelocity.


Ada*_*ent 8

虽然这是一个古老的问题,但我认为我会提供一种新的替代品,即Scalate.

Scalate是模板选项中的强者.唯一的可能性是Scalate需要很多依赖(虽然它需要Scala,但它不需要你在Scala中编写).

我目前最喜欢的是Handlebars.java,它确实有Spring集成.


Nat*_*hes 5

(我之前的回答是在这里过时了.)Freemarker至少和Velocity一样好.但Thymeleaf看起来更引人注目,与布局方言一起,它可能会使像sitemesh和tiles这样的模板框架变得不必要.对于JSF,Thoughtworks的批评似乎是有效的:

我们继续看到团队使用JSF - JavaServer Faces遇到麻烦 - 并且建议您避免使用这种技术.团队似乎选择了JSF,因为它是一个Java EE标准,没有真正评估编程模型是否适合它们.我们认为JSF存在缺陷,因为它的编程模型鼓励使用自己的抽象而不是完全接受底层Web模型.与ASP.NET webforms一样,JSF尝试在顶级HTML标记和无状态HTTP协议上创建有状态组件树.JSF 2.0和2.2的改进,例如无状态视图的引入和GET的推广,是朝着正确方向迈出的步骤,甚至可能是对原始模型存在缺陷的认可,但我们觉得这太晚了.我们建议团队使用简单的框架并与Web技术(包括HTTP,HTML和CSS)紧密配合,而不是处理JSF的复杂性.