我想在我的JSF页面中使用非中断空格。我知道,在纯HTML中,我可以使用
来做这件事,这很好。但是,当我将这些
放在Facelets页面中时,它会出现如下错误:
错误解析/page.xhtml:跟踪错误[line:42]实体“nbsp”已被引用,但未被声明。
这是如何引起的?如何解决?
答案 0 :(得分:169)
Facelets是一种基于XML的视图技术。 XML只有five predefined entities。
不在其中。它仅在纯HTML或旧JSP中使用时(注意:它在JSPX中不起作用,因为它也基于XML!)。
要解决此问题,您需要在包含
实体的XHTML文件的doctype中自己声明实体,
<!DOCTYPE html [
<!ENTITY nbsp " ">
]>
或者更好的是,改为使用(hexa)十进制表示法:
  or  
在普通的IDE中,执行“在所有文件中查找和替换”并将
的每次出现替换为 
都应该是微不足道的。
答案 1 :(得分:10)
尝试使用&#160;
。有关实体的更多信息,请参阅以下网址HTML ISO-8859-1 Reference
答案 2 :(得分:10)
<![CDATA[ ]]>
应该可以正常使用。但是,不会在属性值内工作。
或者,只要&
是XML中的预定义实体,您就可以尝试&nbsp;
- 使用基于XML的JSP为我工作。这应该也适用于属性。
答案 3 :(得分:9)
对我来说,以下doctype启用
:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
答案 4 :(得分:5)
添加
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
到文件顶部