Javascript thymileaf:在控制器中为数据表定义URL
我的Thymeleaf模板中有这段代码,运行良好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
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}
甚至没有使用变量,但它只是解析为urlhref=“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}}]]*/ "";