Thymeleaf - 如何在Thymeleaf标签的html中比较字符串和请求参数" th:if"?

时间:2014-04-23 11:43:35

标签: html spring-mvc thymeleaf

如何在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>

但没有运气,它无效。

3 个答案:

答案 0 :(得分:25)

它不起作用,因为param.error是字符串数组。您必须检索数组的第一个元素(param.error[0])以获取参数的第一个值(请参阅documentation)。除此之外,您还可以通过Web上下文对象方法#httpServletRequest.getParameter访问请求参数,该方法在参数为多值时返回第一个值(请参阅documentation)。

  1. 将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>
    
  2. 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)