Play Framework 中 AJAX 调用的部分渲染

Partial rendering on AJAX call in Play Framework

本文关键字:调用 Framework AJAX Play      更新时间:2023-09-26

我在这里看到了一些类似的问题,但没有一个真正帮助解决了我的问题。

我在页面上有一个表格和一个按钮,需要在单击时重新渲染表格(使用不同的分页参数、排序等)。

我尝试了几种方法,并且成功地将值传递给带有嵌入式 js 路由器的控制器,但由于这些值通过 ajax 调用传递到后端,因此我无法重新渲染表。

我的嵌入式路由器看起来像:

@helper.javascriptRouter("jsRoutes")(
    routes.javascript.UserController.getUsers
)

我将从页面调用它,如下所示:$.ajax(jsRoutes.controllers.UserController.getUsers(3, true, "login"));

现在,最后但并非最不重要的一点是,我想使用 getUsers() 调用的结果重新渲染表。

只需调用:

public Result getUsers(int size, boolean isAsc, String sortBy) {
    ......
    Logger.info("Returning " + size + " users");
    return Results.ok(usersPage.render(userDtos));
}

对我不起作用。

有几种方法。

最简单的方法是有一个以HTML格式呈现表格的游戏控制器,然后使用$('#mytable').load(...)将其拉到您的页面上。

更灵活的是有一个播放控制器,它以 JSON 格式返回数据,然后在浏览器中将其转换为 HTML。这可以手动完成,使用客户端模板引擎(例如 http://handlebarsjs.com/)或使用完整的JavaScript框架(如AngularJS或Ember.js)。