用Thymeleaf调用Javascript函数

时间:2014-10-23 10:22:16

标签: jquery spring thymeleaf

我需要在thymeleaf模板上调用javascript函数,如下所示:

案例1:

<select th:onclick="${'function1('a')'}">

但在这种情况下,百里香叶不起作用..一些研究前(包括stackoverflow)我得到以下“解决方案”:

案例2:

<select th:onclick="${'function1(''a'')'}">

案例3:

<select th:onclick="${'function1(\'a\')'}">

案例4:

<select th:onclick="${'function1(\''+'a'+'\')'}">

但是在所有情况下我都得到同样的错误:“...评估SpringEL表达式的异常......”

我的问题是关于javascript调用,我需要在js函数中调用一些参数$ {var}。我该如何解决这个问题?

由于

8 个答案:

答案 0 :(得分:41)

如果你在JS函数调用中不需要任何动态变量,那么这是怎么做的:

th:onclick="'alert(\'a\');'"

这简单地逃脱单引号并且不需要SpringEL(当然,在这种情况下你可以省去百里香叶属性,只需使用简单的onclick)。

要将变量插入其中:

th:onclick="'alert(\'' + ${myVar} + '\');'"

使用警报功能让我试一试并证明它有效。希望有所帮助。

答案 1 :(得分:4)

您需要调用javascript函数,如下所述。

th:onclick="'javascript:function1(\''+ ${a} +'\');'"

我认为这可以帮到你。

答案 2 :(得分:3)

试试这个。

th:onclick="${'javascript:functionXXX(' + obj.id + ')'}"

答案 3 :(得分:0)

一种方法是使用字符[[' y ']]

例如,我将显示日期类型的变量“ startDate”的内容,其格式为dd/MM/yyyy HH:mm:ss',以使用“警报”功能显示。

<input type="button" th:onclick="alert([[${#dates.format(processInstance.startDate, 'dd/MM/yyyy HH:mm:ss')}]]);" />

输出如下:

22/02/2019 15:43:02

答案 4 :(得分:0)

据我所知,您有两种方法可以做到:

  1. 使用双括号

    <body th:onload="showToast([[${toast}]])">
    ...
    </body>
    

然后是这样的JS函数

function showToast(toast) {
    M.toast({html: toast});
}
  1. 使用数据属性

    <body th:data-toast="${toast}" th:onload="showToast()">
    ...
    </body>
    

和适当的JS函数

function showToast() {
    var toast = document.querySelectorAll('body')[0].getAttribute('data-toast');
    M.toast({html: toast});
}

答案 5 :(得分:0)

使用数据属性的html5的另一种“新”方式:

th:data-url="@{/yourUrl}" th:onclick="window.location.href=this.getAttribute('data-url')"

答案 6 :(得分:0)

您可以将变量写入javascript函数,只需使用[[a]],如上所述。

例如带有重定向的确认框:

胸腺:

<span th:each="a:${all}"></span> <button th:onclick="javascript:myFunction([[${a.id}]],[[${a.text}]]);">X</button>

JavaScript:

函数myFunction(id,text){ var r = confirm(“您确定要删除:” +文本+“?”)`; 如果(r == true){ window.location.href =“ http:// localhost:8080 /” + id; }其他{ 返回false; } }

答案 7 :(得分:0)

我是这样做的:

<td><a href="#" th:onclick="@{'deletetag(' + ${tag.id} + ');'}"><i class="nav-icon fas fa-trash"></i></a></td>

以及一个简单的 <script></script>

中的 deletetag 函数