Thymeleaf前后端传值 页面取值与js取值

参考: Thymeleaf前后端传值 页面取值与js取值

    Thymeleaf 与 Javascript

Thymeleaf教程 (十二) 标签内,js中使用表达式

目的:
后端通过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")@ResponseBodypublic String getUserAllFunction(HttpSession session){
List<UserFuncEntity> list = new ArrayList<>();...//略
//若出现引用类型,需要强制去掉引用,js中不能识别引用return  JSON.toJSONString(menuList,SerializerFeature.DisableCircularReferenceDetect );
}

原文地址:https://www.cnblogs.com/huanghongbo/p/8947477.html

时间: 2024-10-13 19:36:37

Thymeleaf前后端传值 页面取值与js取值的相关文章

springmvc前后端传值总结

1      前端向后端传参 1.1    普通方式传参 1.1.1         页面 参数需要解析成json对象:JSON.parse(JSON.stringify(query)) $.getJSON("${serverUrl}/store/brand/getBrand", JSON.parse(JSON.stringify(query)), function(data){}); 1.1.2         后端 使用普通的参数即可,不需要配置 @RequestMapping(&

springmvc的前后端传值

一.后端传值给前端 1.ModelAndView @RequestMapping("/testModelAndView") public ModelAndView testModelAndView(){ String viewName=SUCCESS; ModelAndView model = new ModelAndView(viewName); model.addObject("time", new Date()); return model; } 2.map

springmvc前后端传值

@pathvible 后端传值(rest风格) exp: @requestMapping("/view/{userId}") public String getiew(@Parthvible int userId){ return "view"; } @PathParam  后端传值 @RequestMapping("/view") public String getview(@PathParam("id") String i

前后端数据交互处理基于原生JS模板引擎开发

json数据错误处理,把json文件数据复制到----> https://www.bejson.com/ 在线解析json 这样能直观的了解到是否是json数据写错,在控制台打断点,那里错误打那里断点,观察是否有错误. <!DOCTYPE html> <html> <head> <title>前后端数据交互处理原生JS模板引擎开发</title> <meta charset ='utf-8'> <script type=&

JQuery ajax 前后端传值介绍

https://jingyan.baidu.com/album/ca41422f0bf08e1eae99ed04.html?picindex=5 现在我们话不多说,开始仔细讲解一下我们ajax内部传递的参数: 其中 1.async ,是一个布尔型变量,这个是同步异步的设置参数,默认为异步操作,也就是true,如果要设置为同步的话,需要设置为false. 2 data 这个就是我们要传值的形式了,必须采用key-value方式进行传值.如果传值为数组格式,会产生同一个变量对应多个值的情况. 3 d

前后端分离——前端项目使用Mock.js 模拟数据

一.简单介绍一下Mock.js 众所周知Mock.js因为两个重要的特性风靡前端: 数据类型丰富支持生成随机的文本.数字.布尔值.日期.邮箱.链接.图片.颜色等.(详情见官网) 拦截 Ajax 请求不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据.安全又便捷 文章会用到的API(也是Mock经常使用的API): Mock.mock(url, type, data) 参数名 参数需求 参数描述 例子 url 可选: URL 字符串或 URL 正则 拦截请求的地址 /mock ty

js数字过长导致前后端数字不一样(真是js的一个大坑)

function send(){ var users=[1000000013810001001]; var data={ users:users, flag:true }; var address="192.168.30.237:10101"; alert(JSON.stringify(data)); $.ajax({ url:"<%=request.getContextPath()%>/api/commandKey/CHAT_BLOCK", type:

一个Java程序猿眼中的前后端分离以及Vue.js入门

松哥的书里边,其实有涉及到 Vue,但是并没有详细说过,原因很简单,Vue 的资料都是中文的,把 Vue.js 官网的资料从头到尾浏览一遍该懂的基本就懂了,个人感觉这个是最好的 Vue.js 学习资料 ,因此在我的书里边就没有多说.但是最近总结小伙伴遇到的问题,感觉很多人对前后端分离开发还是两眼一抹黑,所以今天松哥想和大家聊一下前后端分离以及 Vue.js 的一点事,算是一个简单的入门科普吧. 前后端不分 后端模板:Jsp.FreeMarker.Velocity 前端模板:Thymeleaf 前

前后端分离开发与跨域问题

前后端分离 传统开发方式 曾几何时,JSP和Servlet为Java带来了无限风光,一时间大红大紫,但随着互联网的不断发展,这样的开发方式逐渐显露其弊端,在移动互联网炙手可热的今天,应用程序对于后台服务的要求发生了巨大的变化; 传统的项目开发与交互流程: 在传统的web开发中,页面展示的内容以及页面之间的跳转逻辑,全都由后台来控制,这导致了前后端耦合度非常高,耦合度高则意味着,扩展性差,维护性差,等等问题 传统开发的问题如下: 耦合度高 调试麻烦,出现问题时往往需要前后台一起检查 开发效率低,前