因为可能你开发的contextPath 和生产的 contextPath不同,所以要让你的项目能自动适应contextPath变化 。
如果你是要在thymeleaf标签中使用,有种方法可以获取这个值(实际上几乎没有能用到的地方)
1:
${#httpServletRequest.getContextPath()}
2:
${#servletContext.contextPath}
example:
<script th:src="|${#servletContext.contextPath}/js/index.js|"></script>
如果你没有配置server.servlet.context-path ,那取出的值将是空字符串。
因为 server.servlet.context-path 的配置要求是 以 / 开始,且不能以 / 结尾。
所以如果你配置了,那取出来的内容 就是 /xxxx 这样的格式,在实际使用时,下级目录前要加 / 。
为什么说几乎没有能用到的地方, @{} 这个表达式已经可以满足几乎全部需求了,比如
th:href
th:src
th:onclick="|window.location.href='@{/}'|"
如果是在js块中引用 需要在script 标签上加 th:inline="javascript"
然后加 CDATA 注释 然后你的 表达式要用 /*[[ 和 ]]*/ 围起来
你可以在一个公共的页面里把 contextPath 声明在js变量里,,然后各个页面就可以引用这个脚本块。
<script th:inline="javascript"> /*<![CDATA[*/ var $contextPath = /*[[@{/}]]*/; /*]]>*/ </script>