一尘不染

Thymeleaf:使用Ajax刷新值

spring-boot

我在Thymeleaf模板中有这段代码。

 <div class="alert_counter" th:classappend="${numDeviceEventsWithAlarm>0} ?  show_info">
                                    <span th:text="${numDeviceEventsWithAlarm}">${numDeviceEventsWithAlarm}</span>
                                </div>

是否可以在numDeviceEventsWithAlarm没有F5的情况下使用Ajax 刷新值?


阅读 1161

收藏
2020-05-30

共1个答案

一尘不染

您可以使用该功能仅渲染Thymeleaf视图的片段。

首先提供您要更新 ID 的标记代码段:

<span id="eventCount" th:text="${numDeviceEventsWithAlarm}"></span>

然后我们可以在控制器中创建一个Spring请求映射:

@RequestMapping(value="/event-count", method=RequestMethod.GET)
public String getEventCount(ModelMap map) {
    // TODO: retrieve the new value here so you can add it to model map
    map.addAttribute("numDeviceEventsWithAlarm", count);

    // change "myview" to the name of your view 
    return "myview :: #eventCount";
}

请参阅Thymeleaf手册中的在控制器返回值指定片段以更好地了解指定要渲染哪个片段的返回。

创建一个JavaScript函数以使用ajax(jQuery风格)更新值:

function updateEventCount() {
    $.get("event-count", function(fragment) { // get from controller
        $("#eventCount").replaceWith(fragment); // update snippet of page
    });
}

然后在需要更新值时调用此函数。

2020-05-30