公司旧的项目用play,新的项目改用springboot,前端同学问我,新的项目怎么拿baseUrl?
其实springboot+thymeleaf是可以做到的,我就贴个代码记录一下吧
后端代码如下:
@Resource
private void configureThymeleafStaticVars(ThymeleafViewResolver viewResolver) {
if(viewResolver != null) {
Map<String, Object> vars = Maps.newHashMap();
vars.put("picUrl", env.getProperty("picUrl"));
vars.put("baseUrl", env.getProperty("baseUrl"));
viewResolver.setStaticVariables(vars);
}
}
只要放在spring能扫描到的地方就可以了.
不过这里有个问题,一般来说,这些地址都是通过properties文件,或者yml文件,分环境配置的,要拿配置文件的值,我第一时间就想用@value,但是由于加载顺序的关系,@value加载在后面,所以这里就不能用@value了,用environment
@Resource
private Environment env;
然后到前端的代码:
把这段代码放到header.html,统一加载就行了
<script th:inline="javascript">
const baseUrl = '[(${baseUrl})]';
const picUrl = '[(${picUrl})]';
</script>