Thymeleaf:传递 javascript 参数

Posted

技术标签:

【中文标题】Thymeleaf:传递 javascript 参数【英文标题】:Thymeleaf : passing javascript parameters 【发布时间】:2017-10-20 18:35:15 【问题描述】:

我有一个基本的 SpringBoot 应用程序。使用 Spring Initializer、嵌入式 Tomcat、Thymeleaf 模板引擎,并将其打包为可执行的 JAR 文件。 我想将 POJO 的属性传递给 javascript 函数:

   <tr th:each="company: $companies" >                                                
         <td class="col_actions">
           <a th:href="@/company/edit/id(id=$company.id)" style="color:#808080; margin-right: 10px;">
             <i class="fa fa-pencil-square-o" aria-hidden="true"></i>
           </a>
           <a href="#" style="color:#808080;  text-align: center;" onclick="javascript:confirmDelete (id(id=$company.id));">
              <i class="fa fa-times" aria-hidden="true" ></i>
            </a>
         </td>
   </tr>

但我收到一个错误:Uncaught SyntaxError: missing ) after argument list

【问题讨论】:

【参考方案1】:

问题来自anchor,如果confirmDelete()函数需要字符串id,请试试这个

th:onclick="'javascript:confirmDelete(\'' + $company.id + '\');'"

如果它需要一个数字 id

th:onclick="'javascript:confirmDelete(' + $company.id + ');'"

【讨论】:

可能不适用于最新版本的百里香叶,请参考我发布的类似问题的答案***.com/a/64884416/5105263【参考方案2】:

另一种方式 - th:onclick="|confirmDelete('$company.id')|"

或者,如果您想通过“_”发送多个参数,请使用 th:onclick="|confirmDelete('$type_$company.id')|"

【讨论】:

【参考方案3】:

我发现很多 solutions 对我没有帮助。

这对我有用。

<div class="add-to-cart">
    <button th:attr="onclick='addToBasket(\'' + $product.getId()+  '\');'"> add to basket
    </button>
</div>

【讨论】:

天啊...谢天谢地...我也找到了无数的“解决方案”来解决这个问题,但没有一个有效......除了这个。这是如何将模型变量从 Thymeleaf 传递到 JavaScript 函数的问题的最佳答案。掌声。【参考方案4】:

这对我有用,使用起来简单明了 [[ ]]

使用链接:

<a href="#" id="editUserButton" th:onclick="editUser([[$user.getId]])">Edit</a>

使用按钮:

<button type="button" id="editUserButton" class="btn btn-primary"  th:onclick="editUser([[$user.getId]])">Edit</button>

传递多个参数:

<button type="button" id="editUserButton" class="btn btn-primary" th:onclick="editUser([[$user.getId]],[[$user.getLastName]])">Edit</button>

【讨论】:

以上是关于Thymeleaf:传递 javascript 参数的主要内容,如果未能解决你的问题,请参考以下文章

Javascript 之《函数传参到底是值传递还是引用传递》

thymeleaf的初次使用(带参请求以及调用带参js方法)

Javascript 的 arguments 参 数

javascript 实参和形参

js中给正则传参传递变量

使用@ url 语法传递给 Thymeleaf 的转义参数