**使用th:each时,无法作用于循环最开始处获取循环体。
虽然像大多数的循环中都是无法在循环开始处就获得循环体,但仍有时候,根据某些框架的特性,需要在开始处进行属性设置。
以下示例中,想要在每次循环中在 tr 中根据 user 中的值 ${user.id} 设置 rel属性。
1 2 3 4 5 6 7 8 <!-- 以下方式不会有用,也不会报错 --> <tbody> <tr th:each="user: ${users}" rel="${user.id}" > <td th:text="${user.id}"></td> <td th:text="${user.username}"></td> <td th:text="${user.password}"></td> </tr> </tbody>
如果想要必须设置的话,就需要在后期利用JS代码手动实现。
thymeleaf 提供的自定义属性设置在大多数时候不会有效。
在官方提供的例子中,用户在使用 thymeleaf 时可以对自定义属性来进行赋值。以下为官方示例:
1 2 3 4 5 6 7 8 9 10 11 <!-- Thymeleaf offers a default attribute processor that allows us to set the value of any attribute, even if no specific th:* processor has been defined for it at the Standard Dialect. --> <!-- So something like: --> <span th:whatever="${user.name}">...</span> <-- Will result in: --> <span whatever="John Apricot">...</span>
但在实际使用过程中,这个特性不尽人意,从后台获取的值有时无法利用上面的方式作用到页面中。
有个可取的,稳定的解决方法如下所示:
1 2 3 4 5 <!-- 利用 th:attr 将需要自定义属性写在里面 --> <span th:attr="whatever=${user.name}, another=${user.age}">...</span> <!-- 实际效果 --> <span whatever="John Apricot" another="23">...</span>
设置表单中的action属性时,注意花括号的引用
在设置URL地址时,thymeleaf 推荐使用@
符号:@{...}
。
以下示例指明了需要注意的地方:
1 2 3 4 5 <!-- Will produce '/gtvg/order/details?orderId=3' --> <a href="details.html" th:href="@{/order/details(orderId=${o.id})}">view</a> <!-- Will produce '/gtvg/order/3/details' --> <a href="details.html" th:href="@{/order/{orderId}/details(orderId=${o.id})}">view</a>