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

问题描述 投票:0回答:5

我想在 JSF 页面中使用不间断空格。我知道,在纯 HTML 中,我可以使用

 
来实现此目的,并且效果很好。但是,当我将这些
 
放入 Facelets 页面时,会出现如下错误:

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

这是怎么造成的,如何解决?

jsf jsf-2 facelets html-entities
5个回答
201
投票

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


要解决此问题,您需要在包含

 

实体的 XHTML 文件的文档类型中自行声明该实体,


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

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

&#xA0; or &#160;

在普通 IDE 中,执行“在所有文件中查找和替换”并将每次出现的 
&nbsp;

替换为

&#xA0;
应该很简单。
    


15
投票
&nbsp;


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



14
投票
&amp;#160;

。有关实体的更多信息,您可以参考以下网址

HTML ISO-8859-1 参考


11
投票

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



9
投票
  1. <![CDATA[&nbsp;]]>

    应该可以正常工作。不过,这

    不适用于属性值。

    或者,只要
  2. &amp;
  3. 是 XML 中的预定义实体,您就可以尝试

    &amp;nbsp;

     - 为我使用基于 XML 的 JSP。这也应该在属性中起作用。
    
        

© www.soinside.com 2019 - 2024. All rights reserved.