实体名称必须紧跟'&'在实体参考中

时间:2011-04-17 12:28:07

标签: jsp scriptlet

您好,在我的jsp页面中,我正在测试一个条件

<jsp:scriptlet>

  if (session.getAttribute("empid") != null && session.getAttribute("empid") != "")
{
.......
}

但我收到了编译错误。

  

实体名称必须紧跟'&amp;'在实体参考中。

任何人都知道如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

答案取决于您正在使用的JSP页面的类型。

如果您使用普通的JSP页面,则可以选择将<jsp:scriptlet>标记替换为<% %>或将所有XML实体(例如&)转换为&amp;或{{1 } {} <)。

但是,如果您使用的是JSPX(也称为JSP文档),那么您唯一的选择就是转义XML实体。

答案 1 :(得分:1)

使用常规javascript,您可以在JS周围包装以下内容: //<![CDATA[.... //]]>

给个机会。

答案 2 :(得分:0)

“Facelets是一种基于XML的视图技术,它使用XHTML + XML生成HTML输出.XML有五个特殊字符,由XML解析器进行特殊处理:

&LT;标签的开头。

  

标签的结尾。   “属性值的开始和结束。   '属性值的替代开始和结束。   &安培;实体的开头(以;结尾)。   如果是&amp;没有#(例如或者),XML解析器隐式地查找预定义的实体名称之一,例如lt,gt,amp等。但是,在您的特定情况下,您正在使用&amp;作为JavaScript运算符,而不是XML实体。这完全解释了您获得的XML解析错误:

实体名称必须紧跟'&amp;'在实体参考

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

进行转义

所以,在你的特定情况下,

if(session.getAttribute(“empid”)!= null&amp;&amp; session.getAttribute(“empid”) 必须成为

if(session.getAttribute(“empid”)!= null&amp;&amp; session.getAttribute(“empid”) 使其符合XML格式。“

取自The entity name must immediately follow the '&' in the entity reference