目的:
后端通過Model傳值到前端
頁面通過Model取值顯示
js通過Model取值作為變量使用
1.后台Controller
@GetMapping("/message")
public String getMessage(Model model){
model.addAttribute("message","This is your message");
return "index";
}
注:向model中添加屬性message
2.頁面通過Model取值
<p th:text="#{message}">default message</p>
3.js通過model取值
<script th:inline="javascript">
var message = [[${message}]];
console.log(message);
</script>
注:script標簽中 th:inline 一定不能少,通常在取值的前后會加上不同的注釋
4.如果前端需要接受的是一個JSON格式的對象,一定不能直接傳JSON字符串
可以使用Fastjson將其轉換為JSON對象package springboot.echarts.controller;
import com.alibaba.fastjson.serializer.SerializerFeature;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import com.alibaba.fastjson.JSON;
import springboot.echarts.service.EchartService;
@Slf4j
@Controller
public class EchartsController {
@Autowired
private EchartService echartService;
@GetMapping("/echart")
public String echart(Model model){
String optionStr = null;
// //禁用引用對象
optionStr = JSON.toJSONString(echartService.selectSelling(),
SerializerFeature.PrettyFormat,
SerializerFeature.DisableCircularReferenceDetect);
log.info(optionStr);
// modal.addObject("option",JSON.parseObject(optionStr));
//由於ECharts接收的option必須為JSON對象,optionStr為一個String對象,所以需要轉為JSON對象
//數組對象
//model.addAttribute("option",JSON.parseArray(optionStr));
model.addAttribute("option",JSON.parseObject(optionStr));
return "echart";
}
}
5.ajax調用請求時可以直接返回Json格式的字符串,但是在ajax中聲明對象為JSON
//js調用java方法參考:https://www.cnblogs.com/shirandedan/p/7727326.html
var menuJson;
function getUserFunc(){
$.ajax({
type: 'GET',
url: "getUserAllFunction",
cache: false,
async : false,
// headers : {
// 'Content-Type' : 'application/json;charset=utf-8'
// },
// data: JSON.stringify(menuJson),
dataType: 'json',
success: function (result) {
console.log("獲取用戶所有功能成功");
console.log("result "+JSON.stringify(result));
menuJson = result;
},
error: function (result, XMLHttpRequest, textStatus, errorThrown) {
console.log("獲取用戶所有功能失敗");
console.log("result "+JSON.stringify(result));
console.log("menuJson "+menuJson);
console.log("JSON.stringify(obj) "+JSON.stringify(menuJson));
// 狀態碼
console.log(XMLHttpRequest.status);
console.log(XMLHttpRequest.toLocaleString());
// 狀態
console.log(XMLHttpRequest.readyState);
// 錯誤信息
console.log(textStatus);
}
});
return menuJson;
}
//Ajax全局變量賦值參考: https://blog.csdn.net/gzp444280620/article/details/70922224
menuJson = getUserFunc();
getUserAllFunction請求如下:
@GetMapping("/getUserAllFunction")
@ResponseBody
public String getUserAllFunction(HttpSession session){
List<UserFuncEntity> list = new ArrayList<>();
...//略
//若出現引用類型,需要強制去掉引用,js中不能識別引用
return JSON.toJSONString(menuList,SerializerFeature.DisableCircularReferenceDetect );
}

