在 Thymeleaf 中需要等效的 JSP 标记
Posted
技术标签:
【中文标题】在 Thymeleaf 中需要等效的 JSP 标记【英文标题】:Need equivalent of JSP tag in Thymeleaf 【发布时间】:2020-03-23 13:39:46 【问题描述】:我是 Thymeleaf 的新手。在 jsp 世界中,我可以在 jsp 的“head”中使用以下标签更改 Springboot Web Application 的主题:
<spring:theme code="stylesheet" var="themeName" />
<link href='<spring:url value="css/$themeName"/>' rel="stylesheet" />
如果我要使用“Thymeleaf 模板”而不是 jsp,我应该写什么“与上述完全相同”?我正在使用(并且必须使用)spring boot(带有网络和数据)。有人可以给我指出一条出路吗?
更新
添加更多信息。
我有我的config 和豆子,如下所示:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry)
registry.addResourceHandler("/resources/**")
.addResourceLocations("/resources/static/css**", "/resources/static/**", "/static/")
.setCacheControl(CacheControl.maxAge(2, TimeUnit.HOURS).cachePublic());
@Bean
public ThemeSource themeSource()
ResourceBundleThemeSource themeSource = new ResourceBundleThemeSource();
themeSource.setBasenamePrefix("theme/");
return themeSource;
@Bean
public ThemeResolver themeResolver()
CookieThemeResolver resolver = new CookieThemeResolver();
resolver.setDefaultThemeName("cosmo");
return resolver;
而且我在主题文件夹下还有一堆(例如 Cosmo.BootStrap.min.css)。当我从JSP 中选择主题名称时,我的整个 web 应用程序的主题都会更改。
简而言之,在我的“header.html 片段”中使用 Thymeleaf,我试图实现与此类似的东西 ($somename) -
<link href="css/$somename.css" rel="stylesheet" type="text/css" />
现在我一无所知。请提供一些指导。
【问题讨论】:
【参考方案1】:您始终可以在 Thymeleaf 中构建动态 URL,例如:
<head th:with="themeName=$'stylesheet'">
<link th:href="@|/css/$themeName|" rel="stylesheet"/>
</head>
现在themeName
可以从Model
或ModelMap
类中的控制器填充,也可以在模板HTML 中计算。
【讨论】:
谢谢。我会试一试,然后会更新结果。以上是关于在 Thymeleaf 中需要等效的 JSP 标记的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot整合Jsp和Thymeleaf (附工程)
<%=request.getContextPath()%> 等效于 Thymeleaf
SpringBoot整合Jsp和Thymeleaf (附工程)
Spring boot 使用了 thymeleaf模板后,再配置jsp就不好用了,难道使用了thymeleaf 不能用jsp了?