96

我想在我的 JSF 页面中使用不间断的空格。我知道,在纯 HTML 中,我可以使用 它,而且效果很好。但是,当我将它们 放在 Facelets 页面中时,会出现如下错误:

错误解析 /page.xhtml:错误跟踪 [行:42] 实体“nbsp”被引用,但未声明。

这是如何引起的,我该如何解决?

4

5 回答 5

191

Facelets 是一种基于 XML 的视图技术。XML 只有五个预定义实体 不在其中。它仅在纯 HTML 或旧版 JSP 中使用时才有效(注意:它在 JSPX 中不起作用,因为它也是基于 XML 的!)。

要解决此问题,您需要自己在包含该实体的 XHTML 文件的 doctype 中声明该 实体,

<!DOCTYPE html [
    <!ENTITY nbsp "&#160;"> 
]>

或者,更好的是,使用(十六进制)十进制表示法:

&#xA0; or &#160;

&nbsp;在一般的 IDE 中,执行“在所有文件中查找和替换”并替换每次出现的by应该是微不足道的&#xA0;

于 2012-10-22T13:27:44.453 回答
14

尝试使用&amp;#160;. 有关实体的更多信息,您可以参考以下 url HTML ISO-8859-1 Reference

于 2012-10-22T13:30:06.197 回答
12

对我来说,以下 doctype 启用&nbsp;

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
于 2016-04-29T15:27:46.647 回答
9
  1. <![CDATA[&nbsp;]]>应该可以正常工作。但是,这在属性值内不起作用。

  2. 或者,只要&amp;是 XML 中的预定义实体,您就可以尝试&amp;nbsp; 使用基于 XML 的 JSP 为我工作。这也应该在属性中起作用。

于 2013-02-13T18:07:09.803 回答
9

添加

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

到文件顶部

于 2015-02-25T13:49:14.263 回答