如何在Thymeleaf标签中的html中将字符串与请求参数进行比较" th:if" ? 现在我正在使用这个
<div class="error" th:if="${param.error == 'badCredentialsException'}" th:with="errorMsg=#{login.badCredentials}">
<p class="errorMsg"><span th:text="${errorMsg}"></span></p>
</div>
但没有运气,它无效。
答案 0 :(得分:25)
它不起作用,因为param.error
是字符串数组。您必须检索数组的第一个元素(param.error[0]
)以获取参数的第一个值(请参阅documentation)。除此之外,您还可以通过Web上下文对象方法#httpServletRequest.getParameter
访问请求参数,该方法在参数为多值时返回第一个值(请参阅documentation)。
将Web上下文命名空间用于请求属性
<div class="error" th:if="${param.error[0] == 'badCredentialsException'}" th:with="errorMsg=#{login.badCredentials}">
<p class="errorMsg"><span th:text="${errorMsg}"></span></p>
</div>
Web上下文对象的用法
<div class="error" th:if="${#httpServletRequest.getParameter('error') == 'badCredentialsException'}" th:with="errorMsg=#{login.badCredentials}">
<p class="errorMsg"><span th:text="${errorMsg}"></span></p>
</div>
答案 1 :(得分:2)
在Thymeleaf 3中,我通常使用#request
(缩写为#httpservletrequest
)和#strings.equals()
,看起来像这样:
<div th:if="${#strings.equals(#request.getParameter('error'), 'badCredentialsException')}"></div>
答案 2 :(得分:-1)
这对我来说效果很好
#strings.equals(string1, string2)