我有一个jsp servlet,用于查询数据库并返回一个xml字符串,然后使用
将其设置为会话属性session.setAttribute("directoryInfo", xmlString);
然后我尝试获取该属性并使用此代码使用jstl解析它:
function renderResults(){
var xmlString = <%=(String) session.getAttribute("directoryInfo")%>
document.write("<ul class ='list'>");
<x:parse xml="${xmlString}" var="output"/>
<x:forEach select="$output/person">
<x:set var="uid" select="string($output/person/@uid)"/>
document.write("<li>uid: " + $uid + "</li>");
</x:forEach>
}
当我在tomcat上部署它时,我立即得到错误:
org.apache.jasper.JasperException:javax.servlet.ServletException:javax.servlet.jsp.JspException:org.xml.sax.SAXParseException; systemId:jstl:; lineNumber:1; columnNumber:1;提前结束。
我认为这与我传递变量的方式有关。
注意:@uid是xml字符串中“person”标记内的一个属性。
答案 0 :(得分:2)
您的问题是您尝试在服务器端代码中使用JavaScript变量 你应该可以做到
<x:parse xml="${directoryInfo}" var="output"/>
或专门针对您可以做的会话
<x:parse xml="${sessionScope.directoryInfo}" var="output"/>
JavaScript对服务器端语言没有任何意义,它们只是视为通用文本。