Двойное экранирование HTML / Spring / JSP - PullRequest
1 голос
/ 09 марта 2012

Это то, что отображается в html-источнике:

<li>Confirm Password doesn&amp;#39;t match password./li>

В браузере это читается как: Подтверждение пароля не соответствует паролю.

Это код, который генерирует это:

<spring:hasBindErrors name="profileAccount">
  <ul class="errorsList">
    <c:forEach items="${errors.allErrors}" var="error">
      <li><spring:message code="${error.code}"
          text="${error.defaultMessage}"
        /></li>
    </c:forEach>
  </ul>
</spring:hasBindErrors>

Как мне избежать двойного побега?

Спасибо

Ответы [ 2 ]

0 голосов
/ 17 июля 2019

spring:hasBindErrors и spring:message оба соблюдают стандартную глобальную настройку экранирования HTML (либо через defaultHtmlEscape в качестве параметра контекста, либо через тег htmlEscape).

Конечным результатом является то, что ${error.defaultMessage} уже будет экранирован к моменту, когда он передан в <spring:message>. Вы можете обойти это, отключив экранирование HTML на одном (но не на другом). Пример:

<spring:message htmlEscape="false" code="${error.code}" text="${error.defaultMessage}"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...