当前位置: 首页 > 面试题库 >

实体名称必须紧随实体参考中的“&”

辛成周
2023-03-14
问题内容

我想在我的* .xhtml页面上放一个packman游戏。(我正在使用jsf 2和primefaces 3.5)

然而,

当我“翻译” xhtml中的html页面时,此脚本出现错误:

    <script>

    var el = document.getElementById("pacman");

    if (Modernizr.canvas && Modernizr.localstorage && 
        Modernizr.audio && (Modernizr.audio.ogg || Modernizr.audio.mp3)) {
      window.setTimeout(function () { PACMAN.init(el, "./"); }, 0);
    } else { 
      el.innerHTML = "Sorry, needs a decent browser<br /><small>" + 
        "(firefox 3.6+, Chrome 4+, Opera 10+ and Safari 4+)</small>";
    }
  </script>

在行:

if (Modernizr.canvas && Modernizr.localstorage &&

我得到:

实体名称必须紧随实体引用中的“&”之后。

任何想法如何解决?


问题答案:

到目前为止,所有发布的答案都给出了正确的解决方案,但是没有人能够正确解释具体问题的根本原因。

Facelets是基于XML的视图技术,它使用XHTML+XML生成HTML输出。XML具有五个特殊字符,XML解析器对其进行了特殊处理:

  • < 标签的开始。
  • > 标签的结尾。
  • " 属性值的开始和结束。
  • ' 属性值的替代开始和结束。
  • &实体的开头(以结尾;)。

在箱子&,其后面没有#(例如&#160;&#xA0;等),XML解析器被隐含找五个一预定义的实体名称
ltgtampquotapos,或任何手动定义实体名称。但是,在您的特定情况下,您使用的&是JavaScript运算符,而不是XML实体。这完全解释了您遇到的XML解析错误:

实体名称必须紧随实体参考中的“&”

本质上,您在错误的位置编写了JavaScript代码,而不是JS文件而不是JS文件,因此您应该相应地转义所有XML特殊字符。在&必须进行转义为&amp;

因此,在您的特定情况下,

if (Modernizr.canvas && Modernizr.localstorage &&

必须成为

if (Modernizr.canvas &amp;&amp; Modernizr.localstorage &amp;&amp;

使它对XML有效。

但是,这使JavaScript代码更难以阅读和维护。如Mozilla开发人员网络出色的文档“为XHTML编写JavaScript”所述,您应该将JavaScript代码放在字符数据(CDATA)块中。因此,按照JSF的说法,它将是:

<h:outputScript>
    <![CDATA[
        // ...
    ]]>
</h:outputScript>

XML解析器将把块的内容解释为“普通香草”字符数据而不是XML,因此将XML特殊字符“按原样”解释。

但是,更好的方法是将JS代码放在自己的JS文件中,该文件应由<scriptsrc>或以JSF的形式包含在其中<h:outputScript>

<h:outputScript name="onload.js" target="body" />

(请注意target="body";这种方法;无论它本身位于什么位置,JSF都会<script>在的最后自动呈现,从而获得与和相同的效果;因此,您不再需要在该脚本中使用它们了)<body>``<h:outputScript>``window.onload``$(document).ready()

这样,您无需担心JS代码中的XML特殊字符。作为额外的好处,这使您有机会让浏览器缓存JS文件,从而减小总响应大小。



 类似资料:
  • 问题内容: 我收到错误 但是我的XML文档中没有“&”号!有谁知道为什么会这样?这是我要解析的XML文档: 在此先感谢您的帮助! 问题答案: 是的,您确实有一个&符: 尝试 另外,这可能是一个错字:您可以通过删除反斜杠来纠正它。

  • 我使用JPA和Hibernate作为JPA提供程序来连接到我的数据库。我在数据库中有一个名为的表,这是我的JPA实体。 这是我代码中的一个随机JPA查询。 然后hibernate生成了sql作为 这意味着实体不作为候选者查询(复数)。明确指定后,问题就解决了。JPA或Hibernate不会自动查询复数名吗?例如,如果实体名是User,它不会在数据库中查找users表吗?我想会的,我缺少一些配置。

  • 问题内容: 我在veracode报告中得到了下一个发现:XML外部实体引用(’XXE’)(CWE ID 611)的不当限制引用了下面的代码 … … 我一直在研究,但是我还没有找到这个发现的原因或使它消失的方法。你能告诉我怎么做吗? 问题答案: 您是否看到过有关XXE的OWASP指南? 您没有禁用应禁用的3个功能。最重要的是第一个:

  • 问题内容: 我使用ServiceStack,并且想在Redis中将对象存储为散列,并通过id访问其部分(字段),而无需序列化整个对象,所以我有一个问题: 有没有一种方法可以使用“ Id”以外的其他属性来标记ID字段?我正在使用命名约定,其中id字段的名称类似于“类 名+ ID”。因此,在用户类中,将在 Userclass ID,项目类ItemId等字段中。 是否有一种方法可以更新对象中更改的属性,

  • 我在Eclipse(Kepler)中使用JPA,虽然类中没有任何变化,但我的实体bean偶尔会显示错误。 突然,注释突出显示为错误,相关的错误消息为: 实体“com.test.domain.result”的给定名称为空。 如果我特别添加了name属性(即,那么该行的“someName”部分将突出显示为错误。 好吧,我可以在项目属性中找到一个工具,专门将此错误设置为警告(或忽略!)(Project

  • 本文向大家介绍hibernate 实体类必须要有无参构造函数吗?为什么?相关面试题,主要包含被问及hibernate 实体类必须要有无参构造函数吗?为什么?时的应答技巧和注意事项,需要的朋友参考一下 hibernate 中每个实体类必须提供一个无参构造函数,因为 hibernate 框架要使用 reflection api,通过调用 ClassnewInstance() 来创建实体类的实例,如果没