Thymeleaf指定@{} BaseUrl 路径
问题:
前端请求后端的域名加了一个 路由 前端的一些js 和图片找不到了
修改方法:
package cn.decentchina.kentucky.api.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.IExpressionContext;
import org.thymeleaf.context.IWebContext;
import org.thymeleaf.exceptions.TemplateProcessingException;
import org.thymeleaf.linkbuilder.StandardLinkBuilder;
import java.util.Map;
/**
* @Description: <br/>
* 修改Thymeleaf指定@{} BaseUrl 路径
* <p>
* <br/>
* @Author: Qz1997
* @create 2021/4/28 12:03
*/
@Configuration
public class BaseURLConfig {
@Bean
public BaseUrlLinkBuilder baseUrlLinkBuilder(TemplateEngine templateEngine) {
BaseUrlLinkBuilder baseUrlLinkBuilder = new BaseUrlLinkBuilder();
baseUrlLinkBuilder.setBaseUrl("https://***.***.***/api/");
templateEngine.setLinkBuilder(baseUrlLinkBuilder);
return baseUrlLinkBuilder;
}
public static class BaseUrlLinkBuilder extends StandardLinkBuilder {
private String baseUrl;
public void setBaseUrl(String baseUrl) {
this.baseUrl = baseUrl;
}
@Override
protected String computeContextPath(IExpressionContext context, String base, Map<String, Object> parameters) {
if (!(context instanceof IWebContext)) {
throw new TemplateProcessingException(
"Link base \"" + base + "\" cannot be context relative (/...) unless the context " +
"used for executing the engine implements the " + IWebContext.class.getName() + " interface");
}
if (baseUrl == null) {
throw new TemplateProcessingException("baseUrl 不能为空");
}
return baseUrl;
}
}
}