Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript thymileaf:在控制器中为数据表定义URL_Javascript_Html_Datatables_Thymeleaf - Fatal编程技术网

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

Javascript thymileaf:在控制器中为数据表定义URL,javascript,html,datatables,thymeleaf,Javascript,Html,Datatables,Thymeleaf,我的Thymeleaf模板中有这段代码,运行良好 var ajaxUrl = /*[[@{/api/users/{user}/menus/vegan/datatableList(user=${#authentication.principal.id})}]]*/ "" var table = $('#menuTable').DataTable( { order: [[ 0, "desc" ]], select: true, bLengt

我的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)}]]*/ ""

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

@{/api/users/{user}/menus/vegan/datatableList(user=${#authentication.principal.id})}
是一个thymeleaf表达式,由thymeleaf解析

虽然您的第二次尝试
@{ajaxUrl}
甚至没有使用变量,但它只是解析为url
href=“ajaxUrl”
。您可以使用
@{${ajaxUrl}}
更进一步,但即使这样也不能完全满足您的需要。最接近从控制器提供ajax变量的方法是:

// 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}}]]*/ "";