Как вставить специальные символы, такие как & и <в атрибут значения компонентов 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;" характер.
Ответы
Ответ 1
Вам нужно сбежать от них в XML-сущности.
<h:outputText value="Tom & Jerry Show" />
Эта проблема не связана с JSF как таковой, а с технологией просмотра. Вы, по-видимому, используете Facelets (это прекрасно!). Facelets - это, однако, технология просмотра на основе XML, поэтому вам нужно убедиться, что шаблон хорошо сформирован XML и что все специальные символы, которые должны быть представлены как есть, были экранированы, как показано выше.
В wikipedia вы можете найти список предопределенных символов, которые должны быть экранированы в XML всякий раз, когда вы хотите покажите их как есть. Это следующие объекты символов:
" "
& &
' '
< <
> >
См. также: