springbootthymeleaf在前端设置全局变量让js取到在使⽤jsp时,我们多会采⽤下⾯的⽅式来取到contextPath
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
String path = ContextPath();
String basePath = Scheme()+"://"+ServerName()+":"+ServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Awesome Application</title>
<script type="text/javascript" src="<%=path%>/common/js/jquery/1.8.3/jquery-1.8.3.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var path = $("#path").val();
$.ajax({
url : path + "/student/queryAllStudent",
type : "post",
前端页面模板
...
});
});
</script>
</head>
<body>
<input id="path" value="<%=path%>"/>
...
</body>
</html>
要么是直接拿到页⾯上的java变量path,或者是先⽤隐藏域存放path值,然后在js中取到
现在使⽤springboot和thymeleaf,同样需要拿到contextPath
1.对于页⾯上引⽤js,css等,可以使⽤@,themeleaf会⾃动在路径前加contextPath
如jquery-1.8.3的全路径为/resources/static/common/js/jquery/1.8.3/jquery-1.8.3.js,只要改写成
<script type="text/javascript" th:src="@{/static/common/js/jquery/1.8.3/jquery-1.8.3.js}"></script>
如页⾯上需要跳转超链接,有⼀个“编辑学⽣”超链接,实际想要访问的地址为(“studentMgmt”是contextPath)localhost:8080/studentMgmt/student/findStudentById/1,
jsp页⾯⼀般会写成:
<a href="<%=path%>/student/findStudentById/${studentId}">编辑学⽣</a>
在thymeleaf可以写成:
<a th:href="@{'/student/findStudentById/'+${studentId}}" th:text="编辑学⽣"></a>
2.在js代码中获取contextPath,但⼜不想借助隐藏域的⽅式
可以在当前html初始化加载时,创建全局变量。
<script type="text/javascript" th:inline="javascript">
const baseUrl = [[${#tPath}]];
// 或者 const baseUrl = [[${#ContextPath()}]];
</script>
(参考:
这段代码⼀般会放在head的模板⽂件中加载,这样在该页⾯的其他js中都能取到这个baseUrl 回到⼀开始举的jsp那个例⼦,其中的ajax请求就可以写成,
$.ajax({
url : baseUrl + "/student/queryAllStudent",
type : "post",
...
});

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。