Spring MVC 和 Facelets 等模板引擎
Posted
技术标签:
【中文标题】Spring MVC 和 Facelets 等模板引擎【英文标题】:Spring MVC and templating engine like Facelets 【发布时间】:2013-01-30 03:26:06 【问题描述】:在使用 Spring MVC 时是否有真正的 JSP 标签替代方案?
我正在使用 Spring MVC 将其集成到 JS 框架中。 我在 Spring MVC 中缺少的是一种 模板框架
我以前使用过带有 JSF2 的 Facelets 模板,我喜欢它。
是否有与 Spring MVC 很好地集成并提供与 Facelets 类似的功能的框架/技术?
没有(或很少)xml 配置 可以在一个模板文件中定义部分,并从一个文件中填充所有部分的所有供应内容我正在查看 Apache Tiles 文档,看来您需要为模板中的每个部分设置单独的文件。
示例(伪代码):
template.html:
<insert:headerSection>
<insert:bodySection>
using-template.html:
<use-template: template.html>
<define:headerSection>this is a header</define:headerSection>
<define:bodySection>this is a body</define:bodySection>
我知道我可以使用 JSP 实现这一点,但使用 Facelets 编写代码看起来更简洁、更快捷。
如果 JSP 是我的最佳选择,我在 this thread 中找到了一些建议
【问题讨论】:
【参考方案1】:我认为 Spring Webflow 支持 JSF 2。如果你想坚持使用纯 Spring MVC,它还提供了 Tiles 和 Velocity 模板,或者你甚至可以编写自己的自定义 ViewResolver。
【讨论】:
感谢您的回答,但除了 Facelets 模板之外,我不需要任何 JSF2 功能,而且我没有任何复杂的视图流,因此我不需要 WebFlow。至于 Tiles 和 Velocity,我发现它不像 facelets 那样容易使用(xml 配置,模板的每段代码都必须放在单独的文件中) 如果 Spring 没有 Facelets ViewResolver,你可以自己编写。【参考方案2】:在使用 Tiles 进行一些测试后,我决定使用 JSP。
我不需要配置,我通过编写一个简单的 tag 文件并使用<jsp:attribute/>
和<jsp:invoke/>
标签实现了上述功能。
【讨论】:
【参考方案3】:可以使用 Spring MVC 配置 Facelets。在这里查看:https://github.com/acichon89/springmvcfacelets
【讨论】:
【参考方案4】:freemarker 或 velocity 怎么样,有一个关于如何将这些技术与 Spring MVC 集成的清晰解释。请看以下内容:http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/view.html
【讨论】:
【参考方案5】:我认为制作模板的框架正在被弃用。在这方面,您可以考虑公开一个 Restful API,以便您可以将后端与前端技术分开。通过这种方式,您可以在后端使用 Spring-MVC 的优势,并让前端来决定构建用户界面 (AngularJS) 的技术。
Spring-MVC 支持构建 Restful 控制器,你只需要将你的类标记为@RestController。
【讨论】:
以上是关于Spring MVC 和 Facelets 等模板引擎的主要内容,如果未能解决你的问题,请参考以下文章
在 JAR 中打包 Facelets 文件(模板、包含、组合)
如何将 Facelets 支持添加到 Spring Tool Suite?