我经常在我的JSF XHTML页面上有Javascript,其中包含&&,我最终必须编码为 &&
例如,当我将以下内容放在我的JSF XHTML页面文件中时:
I am an & sign
Run Code Online (Sandbox Code Playgroud)
我收到错误:
The entity name must immediately follow the '&' in the entity reference
Run Code Online (Sandbox Code Playgroud)
解决这个问题的一种方法似乎是将'&'更改为&我认为不喜欢写'''.
对于我在Javascript中使用'&'的情况,我也可以将Javascript包装在CDATA标签中; 当包装在CDATA标签中时,我可以编写'&'而不必将其转义为&,这是一个很好的解决方法,可以在我的页面上具有更可读的Javascript代码.
但是当我想在页面上的其他地方使用文字'&'而不在<script>标签内时会发生什么呢?因此不能轻易地将代码包装在CDATA标签中?对于这些案件,我必须总是逃避'&' &吗?
注意尝试使用转义值的能力,似乎无法解决问题
Bal*_*usC 14
Facelets是一种基于XML的视图技术.当意图从字面上呈现它们时,XML解析器需要特殊处理的任何字符都需要进行XML转义.这涵盖了其他<和&.它<表示XML标记的开头,<foo>并且&表示XML实体的开头,如此&.在<必须进行转义为<和&作为&.
不在Facelets中转义它们会导致以下异常 <
javax.faces.view.facelets.FaceletException:Error Parsing /test.xhtml:Error Traced [line:42]元素的内容必须由格式正确的字符数据或标记组成.
和以下一个 &
javax.faces.view.facelets.FaceletException:Error Parsing /test.xhtml:Error Traced [line:42]实体名称必须紧跟在实体引用中的'&'之后.
这与JavaScript没有特别关系,这适用于整个视图,包括"纯文本".这些角色恰好也是JavaScript运营商.没有办法绕过这个,这就是XML的指定方式.在JavaScript中,还有一种方法可以避免转义或使用CDATA块:只需将JS代码放在自己的.js文件中,然后加载<script>或<h:outputScript>.
在EL中,还有一个&&操作员也需要进行转义&&,但幸运的是这个操作员,and运营商有一个别名.
| 归档时间: |
|
| 查看次数: |
11211 次 |
| 最近记录: |