2014-04-23 4 views
8

Come confrontare la stringa con il parametro request in html nel tag Thymeleaf "th: if"? in questo momento sto usando questoThymeleaf - Come confrontare la stringa con il parametro request in html nel tag Thymeleaf "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> 

ma senza fortuna, non sta funzionando.

+0

Sei sicuro $ {param.error} è il valore corretto ? – geoand

risposta

20

Non funziona perché param.error è una matrice di stringhe. È necessario recuperare il primo elemento dell'array (param.error[0]) per ottenere il primo valore del parametro (vedere documentation). Inoltre è possibile accedere al parametro di richiesta tramite il metodo dell'oggetto contesto Web #httpServletRequest.getParameter che restituisce il primo valore quando il parametro è multivalore (vedere documentation).

  1. L'utilizzo di contesto web spazi dei nomi per la richiesta degli attributi

    <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. Uso del contesto Web oggetto

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

Grazie. Questo funziona perfettamente. – user3515080

+3

Nota importante: $ {param.error [0]} causerà SpelEvaluationException Impossibile indicizzare in un valore nullo se non ci sarà alcun parametro di richiesta. Dipende dal tuo contesto, ma potresti voler controllare $ {param.containsKey ('error')} prima. – Gondy