如何将&
和<
等特殊字符插入JSF组件value
属性?
例如:我想要这样的东西:
<h:outputText value="Tom & Jerry Show" />
当我尝试这个时,我得到以下异常:
javax.faces.view.facelets.FaceletException:Error Parsing /foo.xhtml:Error Traced [line:15]实体名称必须紧跟'&amp;'在实体参考中。
如果是<
,我会收到以下异常:
javax.faces.view.facelets.FaceletException:Error Parsing /foo.xhtml:Error Traced [line:15]与元素类型“h:outputText”关联的属性“value”的值不得包含'&lt; ;”字符。
答案 0 :(得分:58)
您需要将它们转义为XML entities。
<h:outputText value="Tom & Jerry Show" />
此问题与JSF本身无关,而与视图技术无关。你显然使用的是Facelets(非常好!)。然而,Facelets是一种基于XML的视图技术,因此您需要确保模板是格式良好的XML,并且所有要按原样表示的特殊字符都像上面一样被转义。
在wikipedia中,只要您希望按原样显示,就可以在XML中找到需要转义的预定义字符实体列表。它是以下字符实体:
" "
& &
' '
< <
> >