我需要在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}。我该如何解决这个问题?
由于
答案 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)
据我所知,您有两种方法可以做到:
使用双括号
<body th:onload="showToast([[${toast}]])">
...
</body>
然后是这样的JS函数
function showToast(toast) {
M.toast({html: toast});
}
使用数据属性
<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>