Thymeleaf - How to compare string with request parameter in html in Thymeleaf tag "th:if"?

StackOverflow https://stackoverflow.com/questions/23243277

  •  08-07-2023
  •  | 
  •  

Question

How to compare string with request parameter in html in Thymeleaf tag "th:if" ? right now i am using this

<div class="error" th:if="${param.error == 'badCredentialsException'}" th:with="errorMsg=#{login.badCredentials}">                      
     <p class="errorMsg"><span th:text="${errorMsg}"></span></p>
</div>

But no luck, it is not working.

Était-ce utile?

La solution

It's not working because param.error is array of strings. You must retrieve first element of array (param.error[0]) to get first value of parameter (see documentation). Besides that you can access request parameter via Web context object method #httpServletRequest.getParameter that returns first value when parameter is multivalued (see documentation).

  1. Usage of Web context namespaces for request attributes

    <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. Usage of Web context object

    <div class="error" th:if="${#httpServletRequest.getParameter('error') == 'badCredentialsException'}" th:with="errorMsg=#{login.badCredentials}">                      
        <p class="errorMsg"><span th:text="${errorMsg}"></span></p>
    </div>
    

Autres conseils

With Thymeleaf 3, I normally use #request (a short form of #httpservletrequest) and #strings.equals() for that, which will look like this:

<div th:if="${#strings.equals(#request.getParameter('error'), 'badCredentialsException')}"></div>

This worked well for me

#strings.equals(string1, string2)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top