js 操作 ftl 页面中的动态表格数据

本文介绍了一种在FreeMarker模板语言(FTL)中实现动态表格数据与后台交互的方法。具体包括如何从前端获取表格数据并通过AJAX发送到服务器,以及后端如何接收并处理这些数据最终保存至数据库的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.背景

事情是这样的。ftl页面里有一个动态的表格,表格里面的数据是用ftl表达式遍历一个list得到的数据,类似这样:

...
<tbody>
<#list peopleList as people>
    <tr>
        <td>${people.id}</td>
        <td>${people.address}</td>
        <td>${people.name}</td>
    </tr>
</#list>
</tbody>
...
2.需求

现在需求是,点击保存按钮时将表格里面的数据传到后台,存入数据库中。

3.前端代码

我们在JavaScript代码中嵌套ftl表达式,通过ajax将数据传到后台,请求后台方法。

$(document).on("click", '#Button_Save', function () {
        var peopleList = new Array();//声明一个数组
        var peopleListSize = "${peopleList?size}";
        if(peopleListSize != 0){
            var j = 0;
            <#list peopleList as people>
                j++;
                var people= ${people};
                peopleList.push(people);
            </#list>
        }
        $.ajax({
            type: "POST",
            url: contextPath + "/operation/add/",
            data: {"peopleList":JSON.stringify(peopleList)},
            dataType: "json",
            success: function (data) {
                if (data.resultCode == 0) {
                    //成功
                    alert("保存成功");
                } else {
                    //错误
                    alert(data.resultData);
                }
            },
            error: function (data) {
                $("#operationButtonList").show();
                alert("请求失败!");
            }
        });
    });
4.后端代码

后台代码就是接收这个list并将其存到数据库,有一点注意的是,我们在向后台传数据的时候,不能够直接传这个list,在这里我用了一个JSON.stringify()函数,在后台我们直接用String类型参数来接收。

   @PostMapping("/add")
   @ResponseBody
   public JSONObject updatePeopleInfo(@RequestParam String peopleList, HttpServletRequest request) {
       List<People> peopleList = new ArrayList<People>();
       peopleList= JSON.parseArray(peopleList, People.class);
       for(People people: peopleList){
        People peopleInfo= new People();
        peopleInfo.setId(people.getId());
        peopleInfo.setAddress(people.getAddress());
        peopleInfo.setName(people.getName());
            peopleMapper.updateByPrimaryKeySelective(peopleInfo);
       }

       logger.info("peopleInfo:{}", peopleInfo);
       JSONObject result = ResponseUtil.packSuccessResult("保存成功");
       return result;
   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值