java - 尝试在 jSTL 中获取并解析 session 变量(xml 字符串)

标签 java xml jsp servlets jstl

我有一个 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/

相关文章:

java - cglib 在 Intuit 合作伙伴平台 Java SDK 中生成查询期间导致 java.lang.VerifyError

java - 如何在数据库中存储加密的密码?

html - 如何在 Google 表格中使用 IMPORTXML 和 Xpath 获取 <img src> URL?

java - Spring MVC HTTP 状态 400 -

java - 使用具有特定 url 模式的过滤器时出现无限循环

java - 使用 Java Set 进行重复数据删除

java - 发送包裹而不关闭时,出现错误

xml - XML如何使用和解释?

java - 使用 JAXB 从 DTD 文件生成 Java 类 - 如何修改 DTD?

java - 部署时没有将库复制到 Tomcat 目录