Как вставить специальные символы, такие как & и <, в атрибут значения компонентов JSF? - PullRequest
25 голосов
/ 30 июля 2011

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

Например: я хочу что-то вроде этого:

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

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

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

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

javax.faces.view.facelets.FaceletException: Ошибка синтаксического анализа /foo.xhtml: трассировка ошибки [строка: 15] Значение атрибута «value», связанное с типом элемента «h: outputText», не должно содержать «< 'персонаж.

1 Ответ

58 голосов
/ 30 июля 2011

Вам необходимо экранировать их до сущностей XML .

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

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

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

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

См. Также:

...