代码之家  ›  专栏  ›  技术社区  ›  en Peris

thymeleaf:在控制器中为数据表定义URL

  •  0
  • en Peris  · 技术社区  · 6 年前

    我的thymeleaf模板中有这段代码,运行良好

    var ajaxUrl = /*[[@{/api/users/{user}/menus/vegan/datatableList(user=${#authentication.principal.id})}]]*/ ""
    
    
        var table = $('#menuTable').DataTable( {
            order: [[ 0, "desc" ]],
            select: true,
            bLengthChange: false,
            stateSave: true,
            pageLength: 20,
            ajax: ajaxUrl, 
               "columns": [
                   { data: 'id' },
                   { data: 'desc' }
               ] 
        });
    

    我做了一个更改,现在我在控制器中定义URL如下:

    model.addAttribute("ajaxUrl", "/api/users/{user}/menus/vegan/datatableList(user=${#authentication.principal.id})");
    

    这个代码在thymeleaf模板中,但是页面不再工作了。

    var ajaxUrl = /*[[@{ajaxUrl)}]]*/ ""
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Metroids    6 年前

    当然,它已经不起作用了。这是:

    @{/api/users/{user}/menus/vegan/datatableList(user=${#authentication.principal.id})}
    

    @{ajaxUrl} href="ajaxUrl" .你可以更接近 @{${ajaxUrl}}

    // Controller
    model.addAttribute("ajaxUrl", "/api/users/{user}/menus/vegan/datatableList");
    
    // JavaScript
    var ajaxUrl = /*[[@{${ajaxUrl}(user=${#authentication.principal.id})}]]*/ "";
    

    如果要传递整个URL,则必须自己计算用户ID。例如:

    // Controller
    String user = "1"; // You need to supply the user id here. (However you get that in java.)
    model.addAttribute("ajaxUrl", "/api/users/" + user + "/menus/vegan/datatableList");
    
    // JavaScript
    var ajaxUrl = /*[[@{${ajaxUrl}}]]*/ "";