我想在 JSF 页面中使用不间断空格。我知道,在纯 HTML 中,我可以使用
来实现此目的,并且效果很好。但是,当我将这些
放入 Facelets 页面时,会出现如下错误:
错误解析/page.xhtml:错误跟踪[行:42]实体“nbsp”被引用,但未声明。
这是怎么造成的,如何解决?
Facelets 是一种基于 XML 的视图技术。 XML 仅具有“五个预定义实体”。
不在其中。它仅在纯 HTML 或旧版 JSP 中使用时才有效(注意:它在 JSPX 中不起作用,因为它也是基于 XML 的!)。
要解决此问题,您需要在包含
实体的 XHTML 文件的文档类型中自行声明该实体,
<!DOCTYPE html [
<!ENTITY nbsp " ">
]>
或者更好的是,使用(十六进制)十进制表示法:
  or  
在普通 IDE 中,执行“在所有文件中查找和替换”并将每次出现的
替换为
 
应该很简单。
:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<![CDATA[ ]]>
应该可以正常工作。不过,这
不适用于属性值。或者,只要
&
&nbsp;
- 为我使用基于 XML 的 JSP。这也应该在属性中起作用。