gpt4 book ai didi

java - Thymeleaf:将 webjar CSS 文件的内容插入样式标签

转载 作者:太空宇宙 更新时间:2023-11-04 10:11:13 24 4
gpt4 key购买 nike

在某些情况下,内联 CSS 文件优于通过 URL 引用它(例如,在渲染包含所有内容的 HTML 页面时)。该 CSS 文件可能来自 webjar。

我需要什么才能调用这样的电话:

<style th:insert="/webjars/bootstrap/bootstrap.css"></style>

这是在 spring-boot 环境中运行,没有任何网络服务器。

最佳答案

所以我让它与一个特殊的 TemplateResolver 一起工作。它的逻辑类似于Spring的WebJarsResourceResolver ,并使用WebJarAssetLocator .

public class WebJarTemplateResolver extends ClassLoaderTemplateResolver {

private final static String WEBJARS_PREFIX = "/webjars/";

private final static int WEBJARS_PREFIX_LENGTH = WEBJARS_PREFIX.length();

private final WebJarAssetLocator webJarAssetLocator = new WebJarAssetLocator();

@Override
protected ITemplateResource computeTemplateResource(IEngineConfiguration configuration, String ownerTemplate, String template, String resourceName, String characterEncoding, Map<String, Object> templateResolutionAttributes) {

resourceName = findWebJarResourcePath(template);
if (resourceName == null) {
return null;
}

return super.computeTemplateResource(configuration, ownerTemplate, template, resourceName, characterEncoding, templateResolutionAttributes);
}

@Nullable
protected String findWebJarResourcePath(String templateName) {
if (!templateName.startsWith(WEBJARS_PREFIX)) {
return null;
}

int startOffset = WEBJARS_PREFIX_LENGTH;
int endOffset = templateName.indexOf('/', startOffset);

if (endOffset == -1) {
return null;
}

String webjar = templateName.substring(startOffset, endOffset);
String partialPath = templateName.substring(endOffset + 1);
return this.webJarAssetLocator.getFullPathExact(webjar, partialPath);
}
}

这是通过以下配置集成到应用程序中的:

@Configuration
public class ThymeleafConfiguration {

private SpringTemplateEngine templateEngine;

public ThymeleafConfiguration(SpringTemplateEngine templateEngine) {
this.templateEngine = templateEngine;
}

@PostConstruct
public void enableWebjarTemplates() {
templateEngine.addTemplateResolver(new WebJarTemplateResolver());
}
}

关于java - Thymeleaf:将 webjar CSS 文件的内容插入样式标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52297524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com