Thymeleaf - 如何在 Thymeleaf 标签“th:if”中将字符串与 html 中的请求参数进行比较?
Posted
技术标签:
【中文标题】Thymeleaf - 如何在 Thymeleaf 标签“th:if”中将字符串与 html 中的请求参数进行比较?【英文标题】:Thymeleaf - How to compare string with request parameter in html in Thymeleaf tag "th:if"? 【发布时间】:2014-06-08 05:25:21 【问题描述】:如何在 Thymeleaf 标签 "th:if" 中比较字符串与 html 中的请求参数? 现在我正在使用这个
<div class="error" th:if="$param.error == 'badCredentialsException'" th:with="errorMsg=#login.badCredentials">
<p class="errorMsg"><span th:text="$errorMsg"></span></p>
</div>
但运气不好,它不起作用。
【问题讨论】:
您确定 $param.error 的值正确吗? 【参考方案1】:这对我很有效
#strings.equals(string1, string2)
【讨论】:
这与this other answer中的解决方案相同。【参考方案2】:在 Thymeleaf 3 中,我通常使用 #request
(#httpservletrequest
的缩写形式)和 #strings.equals()
,如下所示:
<div th:if="$#strings.equals(#request.getParameter('error'), 'badCredentialsException')"></div>
【讨论】:
【参考方案3】:它不起作用,因为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>
【讨论】:
关于此的重要说明:如果没有这样的请求参数,$param.error[0] 将导致 SpelEvaluationException 无法索引到空值。这取决于您的上下文,但您可能需要检查 $param.containsKey('error') 之前。以上是关于Thymeleaf - 如何在 Thymeleaf 标签“th:if”中将字符串与 html 中的请求参数进行比较?的主要内容,如果未能解决你的问题,请参考以下文章