错误解析/page.xhtml:跟踪错误[line:42]引用了实体"nbsp",但未声明

Fah*_*kar 82 jsf facelets html-entities jsf-2

我想在我的JSF页面中使用非中断空格.我知道,在纯HTML中,我可以使用 这个,这很好.但是,当我将它们 放在Facelets页面中时,它会出现如下错误:

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

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

Bal*_*usC 174

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

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

<!DOCTYPE html [
    <!ENTITY nbsp "&#160;"> 
]>
Run Code Online (Sandbox Code Playgroud)

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

&#xA0; or &#160;
Run Code Online (Sandbox Code Playgroud)

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

  • 使用十六进制或十进制表示法.:-) (3认同)

小智 11

尝试使用&amp;#160;.有关实体的更多信息,请参阅以下网址HTML ISO-8859-1参考


Pet*_*olf 10

  1. <![CDATA[&nbsp;]]>应该工作正常.但是,这在属性值内部不起作用.

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


Ole*_*sky 9

对我来说,以下doctype可以&nbsp;:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Run Code Online (Sandbox Code Playgroud)


小智 5

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Run Code Online (Sandbox Code Playgroud)

到文件的顶部

  • 我想知道为什么这会产生两个负面影响.它可能有点过于简洁,但它是正确的.该实体未在doctype中定义,并且在使用提供的规范时定义.一年之后,有人发布完全相同的东西并得到两个upvotes. (4认同)