Подтвердить что ты не робот

Как вставить специальные символы, такие как & и <в атрибут значения компонентов JSF?

Как вставить специальные символы, такие как & и < в атрибуты JSF value?

Например: Мне нужно что-то вроде этого:

<h:outputText value="Tom & Jerry Show" />

Когда я пытаюсь это сделать, я получаю следующее исключение:

javax.faces.view.facelets.FaceletException: анализ ошибок /foo.xhtml: ошибка. Трассировка [строка: 15]. Имя объекта должно немедленно следовать за символом '&' в ссылке на объект.

И в случае < я получаю следующее исключение:

javax.faces.view.facelets.FaceletException: анализ ошибок /foo.xhtml: ошибка. Трассировка [строка: 15] Значение атрибута "значение", связанное с типом элемента "h: outputText", не должно содержать "< lt;" характер.

4b9b3361

Ответ 1

Вам нужно сбежать от них в XML-сущности.

<h:outputText value="Tom &amp; Jerry Show" />

Эта проблема не связана с JSF как таковой, а с технологией просмотра. Вы, по-видимому, используете Facelets (это прекрасно!). Facelets - это, однако, технология просмотра на основе XML, поэтому вам нужно убедиться, что шаблон хорошо сформирован XML и что все специальные символы, которые должны быть представлены как есть, были экранированы, как показано выше.

В wikipedia вы можете найти список предопределенных символов, которые должны быть экранированы в XML всякий раз, когда вы хотите покажите их как есть. Это следующие объекты символов:

"     &quot;
&     &amp;
'     &apos;
<     &lt;
>     &gt;

См. также: