在我的Facelets模板中,我使用了XHTML doctype:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
我想根据一般建议将其更改为HTML5 doctype:
<!DOCTYPE html>
但是,JSF抛出了一个解析错误:
javax.faces.view.facelets.FaceletException:Error Parsing /template.xhtml:Error Traced [line:42]实体“nbsp”被引用,但未被声明。
然后解析HTML
实体。该实体使用如下:
<p:menuitem value=" My menuitem">
这是如何引起的?如何解决?
答案 0 :(得分:7)
HTML5 doctype没有预定义的实体。它假定整个文档已经知道UTF-8。换句话说,您可以“安全地”在HTML5文档中放置真正的非破坏空格字符。然而,由于使用普通的美式键盘以可见的方式输入它并非易事,因此许多开发人员更喜欢使用实体来理解它是可以理解的。
Facelets反过来支持仅基于XML的视图技术five predefined XML entities <
,>
,&
,"
和'
。
不在其中。
你有2个选项(除了第3个选项,只是在文档中直接打印字符):
在doctype中自行声明
实体:
<!DOCTYPE html [
<!ENTITY nbsp " ">
]>
或者,改为使用(hexa)十进制表示法:
  or