使用 Spring 进行基于 JSP 的模板

Posted

技术标签:

【中文标题】使用 Spring 进行基于 JSP 的模板【英文标题】:JSP-based Templating with Spring 【发布时间】:2010-09-27 21:11:40 【问题描述】:

我将 Spring 的 MVC 与 JSP 视图一起使用。每个 JSP 页面都有类似的结构——页眉、内容、页脚,可能还有边栏等。四处寻找“最佳实践”的人似乎“包含”页脚和页眉,但这意味着每个 JSP 页面都包含这些“包含”语句,给出固定的格式。在我看来,更好的解决方案将涉及嵌套视图,其中使用适合相关页面的信息扩展基本模板。这种方法的一个优点是您可以在基本模板中假定默认值,而无需在其他地方重复它们。另一个优点是您可以在包含大量文本的页面中进一步分离结构和内容(“页眉”和“页脚”是结构化的,因此属于基本模板)(想想帮助页面 - 您可以将所有内容放入数据库,但为什么要麻烦,尤其是因为使用 Spring 您可以通过语言环境解析到不同的视图?)。

在 Spring 的 MVC 级别似乎没有对此的任何支持,但它可以使用自定义标签在 JSP 中实现,而且确实有一个相当笨拙的尝试here(这可能解释了我想要什么比这个问题更好,虽然我认为你可以减少干扰)。

无论如何,我的问题是 - 这是否已经作为(流行/标准)标签库存在?我很高兴编写自定义标签,但我对这些东西(生成网站)的印象是已经有大量的解决方案,其中大部分工作都在选择正确的工具(例如 Spring)。谢谢。

【问题讨论】:

【参考方案1】:

我推荐SiteMesh。它适用于 Spring。

【讨论】:

不再。我会指出,答案已经有将近五年的历史了。 是的,我可以看到。不过,很高兴知道您更新链接的速度如此之快(不仅为我,也为未来的读者)。 只是好奇 - 是什么让你得到这个答案?您是对 SiteMesh 感兴趣并通过搜索找到它,还是只是像版主一样寻找要举报的内容? 用它来标记这个问题是重复的:***.com/q/17952814/1065197 我还想知道 JSP 的模板系统。我目前只知道 Facelets 上的模板系统。【参考方案2】:

我可能无法在这里获得完整的图片,但您可能还想看看apache tiles

我个人更喜欢避免添加新框架的复杂性,所以我坚持使用tag files

【讨论】:

【参考方案3】:

如果您不依赖于 Spring MVC,我建议您使用 Apache Wicket,因为它允许您所描述的行为类型。它还与 Spring for IoC 很好地集成。

Wicket's markup inheritance

【讨论】:

【参考方案4】:

我推荐Apache Tiles

我已经使用 SiteMesh 和 Tiles 完成了这项工作。但我相信 Tiles 比 SiteMesh 更适合这项工作。 -- 在 MHO 中,SiteMesh 的目标更多是在操纵现有网页。

【讨论】:

以上是关于使用 Spring 进行基于 JSP 的模板的主要内容,如果未能解决你的问题,请参考以下文章

Spring MVC:JSP模板执行后获取文本

leo--study

Spring Boot基础教程8-web应用开发-模板引擎jsp

Spring Boot 2.0 使用模板引擎返回JSP页面实战

Spring ROO - 直接生成 jsp 文件而不是 jspx 模板

Spring Security UserNotFoundException 在带有 JSP 视图模板的 Spring Boot 中不显示错误消息