公司旧的项目用play,新的项目改用springboot,前端同学问我,新的项目怎么拿baseUrl? 其实springboot+thymeleaf是可以做到的,我就贴个代码记录一下吧 后端代码如下:
1 2 3 4 5 6 7 8 9 |
@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
1 2 |
@Resource private Environment env; |
然后到前端的代码: 把这段代码放到header.html,统一加载就行了
1 2 3 4 |
<script th:inline="javascript"> const baseUrl = '[(${baseUrl})]'; const picUrl = '[(${picUrl})]'; </script> |
from:https://blog.csdn.net/bear_lam/article/details/80278590
View Details
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
package com.example.thymeleaf.commons; import org.springframework.stereotype.Component; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** * 配置静态资源映射 * * @author sunziwen * @version 1.0 * @date 2018-11-16 14:57 **/ @Component public class WebMvcConfig implements WebMvcConfigurer { /** * 添加静态资源文件,外部可以直接访问地址 * * @param registry */ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); } } |
from:https://blog.csdn.net/wenxingchen/article/details/84139845
View Details目录 spring boot程序的static目录默认资源路径源码 application.yml增加配置 spring boot程序的static目录默认资源路径源码
1 2 3 4 5 |
<code class="prism language-java has-numbering"><span class="token keyword">private</span> <span class="token keyword">static</span> <span class="token keyword">final</span> String<span class="token punctuation">[</span><span class="token punctuation">]</span> CLASSPATH_RESOURCE_LOCATIONS <span class="token operator">=</span> <span class="token punctuation">{</span> <span class="token string">"classpath:/META-INF/resources/"</span><span class="token punctuation">,</span> <span class="token string">"classpath:/resources/"</span><span class="token punctuation">,</span> <span class="token string">"classpath:/static/"</span><span class="token punctuation">,</span> <span class="token string">"classpath:/public/"</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> |
可以看到springboot默认加载资源的路径是在calsspath下,这样jar打包的web项目资源文件只能放在jar内。这样修改和维护起来非常不方便。 参考官方文档,static资源也可以放在jar包外部,只要在配置文件中增加static-locations: 就可以直接在配置文件中覆盖默认的静态资源路径的配置信息 application.yml增加配置
1 2 3 4 5 6 7 8 |
<span class="token key atrule">spring</span><span class="token punctuation">:</span> <span class="token key atrule">resources</span><span class="token punctuation">:</span> <span class="token comment">#web静态页面路径</span> <span class="token comment"># static-locations: file:///E:/workspace/demo/target/demo/static/,file:///E:/workspace/demo/target/demo/public/</span> <span class="token comment">#当前启动目录下相对路径</span> <span class="token key atrule">static-locations</span><span class="token punctuation">:</span> file<span class="token punctuation">:</span>./static/<span class="token punctuation">,</span>file<span class="token punctuation">:</span>./public/ |
from:https://blog.csdn.net/u014155356/article/details/82862683
View Details