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