gpt4 book ai didi

jsf-2 - 为什么和号 (&) 需要在 JSF 中编码?有没有办法解决这个问题?

转载 作者:行者123 更新时间:2023-12-03 23:42:01 27 4
gpt4 key购买 nike

我的 JSF XHTML 页面上经常有带有 && 的 Javascript,我最终不得不将其编码为 &&
例如,当我在 JSF XHTML 页面文件中放置以下内容时:

I am an & sign

我收到错误:
The entity name must immediately follow the '&' in the entity reference

解决此问题的一种方法似乎是将“&”更改为 &我发现只写“&”是不可取的。

似乎对于我在 Javascript 中使用“&”的情况,我可以将 Javascript 包装在 CDATA 标签中;当包裹在 CDATA 标签中时,我可以写 '&' 而不必将它转义为 & ,这是一个很好的解决方法,能够在我的页面上拥有更多可读的 Javascript 代码。

但是当我想在页面上的其他地方使用文字“&”而它不在 <script> 之内时会发生什么?标签,因此不能轻松地将代码包装在 CDATA 标签中?我必须总是将 '&' 转义为 &amp;对于这些情况?

请注意尝试使用 的转义值的能力,但似乎无法解决问题

最佳答案

Facelets 是一种基于 XML 的 View 技术。任何由 XML 解析器进行特殊处理的字符都需要进行 XML 转义,以便按字面意思呈现它们。其中包括 <& . <表示像这样的 XML 标记的开始 <foo>&表示像这样的 XML 实体的开始 &#38; . <必须转义为 &lt;&&amp; .
不在 Facelets 中对它们进行转义将导致 < 的以下异常

javax.faces.view.facelets.FaceletException: Error Parsing /test.xhtml: Error Traced[line: 42] The content of elements must consist of well-formed character data or markup.


以下是 &

javax.faces.view.facelets.FaceletException: Error Parsing /test.xhtml: Error Traced[line: 42] The entity name must immediately follow the '&' in the entity reference.


这与 JavaScript 没有特别的关系,这适用于整个 View ,包括“纯文本”。这些字符恰好也是 JavaScript 运算符。没有办法解决这个问题,这就是 XML 的指定方式。然而,在 JavaScript 中,还有一种方法可以避免转义或使用 CDATA 块:只需将该 JS 代码放在自己的 .js 中。您加载的文件 <script><h:outputScript> .
在EL中,还有 &&也需要转义为 &amp;&amp; 的运算符同样,幸运的是这个运算符有一个别名, and运算符(operator)。
也可以看看:
  • Mozilla Developer Network - Writing JavaScript for XHTML
  • 关于jsf-2 - 为什么和号 (&) 需要在 JSF 中编码?有没有办法解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11086709/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com