0

我这里有一些代码。

<c:set var="songId" value="${param.songid}"/>
<c:import var="xml" url="WEB-INF/comment.xml" />
<x:parse var="doc" doc="${xml}" scope="session" />
<c:catch var="ex">
<x:forEach var="cmt" select="$doc//*[songId=$songId]" varStatus="counter">
    <li>
        <div class="avacmtSide">
        </div>
        <div class="ctcmtSide">
            <a href="#" style="padding:10px;"><x:out select="$cmt/uploader"/> </a>
            <div style="padding:10px;"><x:out select="$cmt/comment"/> </div>
        </div>
        <div class="clear"></div>
    </li>
</x:forEach>

当我运行它时出现错误 java.lang.ClassNotFoundException: org.apache.xpath.VariableStack。当我在谷歌搜索这个错误时。人们说缺少 xalan 库。但是我在我的项目中添加了 xalan-2.7.0.jar 并且它不起作用。任何知道它的人请帮助我。谢谢。

4

1 回答 1

0

变量语法不正确:

 [songId=$songId]

应该是这样的:

 "$doc//*[@songId=${pageScope:songId}]"

使用 JSTL 数据作为 XPath 变量

作用域变量可用于 XPath 表达式 ($implicitObject:variableName),类似于它们在 EL (${implicitObject.variableName}) 中的使用方式。如果隐式对象被省略,范围将按标准顺序搜索。请注意,“.” 和“[]”符号不能用于访问 bean 属性。

参考

于 2014-07-11T16:11:35.580 回答