我有一个 jsp servlet,它查询数据库并返回 xml 字符串,然后使用将其设置为 session 属性
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;系统ID: jSTL:;行号:1;列数:1;文件提前结束。
我认为这与我传递变量的方式有关。
注意:@uid 是 xml 字符串中“person”标记内的一个属性。
最佳答案
您的问题是您尝试在服务器端代码中使用 JavaScript 变量。
你应该能够做到
<x:parse xml="${directoryInfo}" var="output"/>
或者您可以执行的特定目标 session
<x:parse xml="${sessionScope.directoryInfo}" var="output"/>
JavaScript 对服务器端语言没有任何意义,它们只是将其视为通用文本。
关于java - 尝试在 jSTL 中获取并解析 session 变量(xml 字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25553881/