【问题标题】:Spring and thymeleaf with html as resources以html为资源的spring和thymeleaf
【发布时间】:2014-12-01 07:15:15
【问题描述】:

我正在学习 java ee 相关技术(我是相对新手)并尝试使用 Spring 和 Thymeleaf 作为前端编写简单的 Web 应用程序,但我遇到了一些问题 模块化。

我发现它用于将 .html 文件打包到 WEB-INF 目录中以用于安全目的,但是,据我猜测,这意味着我必须将我所有的视图放在那里,在这个项目中有控制器。我想通过有很多项目来避免这种情况,例如:

  • 网络应用
  • 管理模块
  • 用户模块
  • 核心模块

并且它们每个都有自己的、特定于模块的控制器和视图 (html) 以及 web-app 将它们全部组合成一个大项目。

在 Thymelaf 中,我找到了 ClassLoaderTemplateResolver 之类的东西,并得到了(也许是愚蠢的想法)如何将大项目分成许多项目 - 将 htmls 放入类路径资源目录。 通过这个,我可以从任何模块项目中请求任何 html 视图。这是否违反了某些安全原因?

我想问有没有人有类似的问题,并找到了正确的解决方案如何优雅地将 html web-app 项目划分为许多较小的“特定于上下文”的项目?

这是我目前的项目结构。蓝色箭头表示哪个视图连接到哪个控制器: http://prntscr.com/4tqt9m

这是我在这里提出的第一个问题,希望您能理解我。

提前谢谢你。

【问题讨论】:

  • 你做了很多额外的工作。使用 Spring Boot 并将您的 Thymeleaf 文件放入 src/main/resources/templates
  • @chrylis 谢谢!!我花了两个多小时试图弄清楚要使用哪个 TemplateResolver 以及所有这些。我删除了所有内容,spring boot 自动发现了 -_-

标签: java spring thymeleaf


【解决方案1】:

您也许可以在运行时使用类路径查找合并多个 Spring 和 Thymeleaf 模块。只需确保您提供不同的限定名称/文件夹结构(例如:不同包上名为 views/index.html 的两个文件可能会导致混乱的不一致)

如果你正确配置类路径扫描,Spring 应该考虑到类路径上的 jar 包。

使用 Thymeleaf,尝试设置一个带有前缀的 TemplateResolver,例如 classpath:/templates/,然后在不同的模块上设置一个文件夹结构,例如 src/main/resources/templates/package-a/foo.htmlsrc/main/resources/templates/package-b/foo.html。我还没有尝试过,也不是 100% 确定类加载器可以合并这些好吗。

【讨论】:

  • 是的,在这种情况下,限定名称是强制性的,它确实有效,但我遇到了相关问题。它是加载资源,如图像、css 和类似的东西。现在我不确定我想实现一件好事。开始有点乱了。
  • 您可以考虑使用多个战争,一个用于每个上下文根。但是,您可能没有战争之间的会话数据共享
  • 实际上,将资源放在 /META-INF/resources 中可以将它们视为在目标 web-app 项目中的 web-app 结构中。
猜你喜欢
  • 2016-06-03
  • 2018-07-21
  • 2014-11-21
  • 1970-01-01
  • 2015-03-08
  • 2017-11-02
  • 2013-08-25
  • 2017-02-24
  • 2016-08-17
相关资源
最近更新 更多