jsf - javax.faces.view.facelets.FaceletException : Error Parsing/template. xhtml : The entity "nbsp" was referenced, 但未声明

标签 jsf jsf-2 doctype html-entities

在我的 Facelets 模板中,我使用了 XHTML 文档类型:

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

我想将其更改为 HTML5 doctype根据一般建议:

<!DOCTYPE html>

但是,JSF 抛出了解析错误:

javax.faces.view.facelets.FaceletException: Error Parsing /template.xhtml: Error Traced[line: 42] The entity "nbsp" was referenced, but not declared.

HTML   实体不会被解析。该实体的使用方式如下:

<p:menuitem value="&nbsp;My menuitem">

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

最佳答案

HTML5 文档类型没有预定义实体。它假定整个文档已经支持 UTF-8。换句话说,您可以“安全”地将真正的不间断空格字符放入 HTML5 文档中。然而,由于使用常规美国键盘以可见的方式输入它并不简单,因此许多开发人员更喜欢使用实体来输入它是可以理解的。

Facelets 仅支持作为基于 XML 的 View 技术 five predefined XML entities <>&"'  不在其中。

您有 2 个选项(除了直接在文档中打印字符的第三个选项之外):

  1. 在文档类型中自行声明   实体:

    <!DOCTYPE html [
        <!ENTITY nbsp "&#xA0;"> 
    ]>
    
  2. 或者,使用(十六进制)十进制表示法:

    &#xA0; or &#160;
    

关于jsf - javax.faces.view.facelets.FaceletException : Error Parsing/template. xhtml : The entity "nbsp" was referenced, 但未声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21754475/

相关文章:

html - Primefaces p :calendar inside overlaypanel

jsf - 无法让 PrimeFaces RequestContext.getCurrentInstance().openDialog() 工作

java - 如何在JSF中上传图片

jsf-2 - 在 JSF 中将 InputStream 显示为动态图像

java - 在 JSF 中生成自己的 session ID

jsf-2 - 使用复合 :insertFacet/renderFacet does not work inside t:dataTable

asp.net - using 指令可以放置在 ASP.NET Razor 页面中的什么位置?

java - 将参数传递给支持 bean 构造函数?

css - IE8/IE9 中的表格问题

html - IE 不使用怪癖模式所需的最低文档类型是什么?