2014-04-23 25 views
8

Cách so sánh chuỗi với tham số yêu cầu trong html trong thẻ Thymeleaf "th: if"? ngay bây giờ tôi đang sử dụng số nàyThymeleaf - Cách so sánh chuỗi với tham số yêu cầu trong html trong thẻ 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> 

Nhưng không may mắn, nó không hoạt động.

+0

Bạn có chắc chắn $ {} param.error có giá trị đúng ? – geoand

Trả lời

20

Nó không hoạt động vì param.error là mảng chuỗi. Bạn phải lấy phần tử đầu tiên của mảng (param.error[0]) để lấy giá trị tham số đầu tiên (xem documentation). Bên cạnh đó bạn có thể truy cập tham số yêu cầu thông qua phương thức đối tượng ngữ cảnh Web #httpServletRequest.getParameter trả về giá trị đầu tiên khi tham số được đa giá trị (xem documentation).

  1. Sử dụng không gian tên bối cảnh Web cho yêu cầu các thuộc tính

    <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. Sử dụng đối tượng bối cảnh 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> 
    
+0

Cảm ơn bạn. Điều này hoạt động hoàn hảo. – user3515080

+3

Lưu ý quan trọng về điều này: $ {param.error [0]} sẽ khiến SpelEvaluationException Không thể lập chỉ mục thành giá trị rỗng nếu không có tham số yêu cầu như vậy. Nó phụ thuộc vào ngữ cảnh của bạn, nhưng bạn có thể muốn kiểm tra $ {param.containsKey ('error')} trước đây. – Gondy

Các vấn đề liên quan