首页 > 解决方案 > Spring Boot 和 Thymeleaf:更新数据库而不刷新页面

问题描述

我有一个显示列表的应用程序,我希望用户能够单击一个复选框以“检查”所看到的特定列表。

如果我刷新页面,我已经设法做到这一点,但问题是使用该解决方案我需要在每次用户“检查”列表时查询数据库以取回我的“列表”。

我认为使用 Ajax 我应该能够更新数据库中的特定列表对象,而无需刷新整个页面,因此无需查询数据库中的所有“列表”对象。

我已经尝试使用以下代码,但是 Ajax 函数要么没有被调用,要么没有工作,因为当我勾选复选框时我的控制器没有被调用:

控制器:

    @PostMapping({"/{id}/check", "Check Listing"})
    public void checkListing(@PathVariable("id") long id) {

        // update listing

    }

复选框:

<input type="checkbox" th:onclick="|checkedListing('${listing.id}')|"/>
<div id="successMessage" style="display:none;"> Listing successfully updated! </div>

阿贾克斯功能:

    function checkedListing(listingId) {
        $.ajax({
            type: 'post',
            url: "/" + listingId + "/check",
            success: function () {
                $("#successMessage").show();
            }
        });
    }

</script>

你能告诉我我做错了什么吗?谢谢!

标签: ajaxdatabasespring-bootthymeleaf

解决方案


Can you try making your ajax script thymleaf readable as

<script th:inline="javascript">
 /*<![CDATA[*/
   //here goes your ajax function
 /*]]>*/
</script>

Apart from that i assume you have controller method public void checkListing(@PathVariable("id") long id) in class @RestController


推荐阅读