小编典典

JSTL-在xpath中使用变量?

jsp

这是我想做的:

<x:forEach var="node" select="$doc//*[name()='item']">
    <x:out select="*[name()='${nodeName}']" />
</x:forEach>

我想基于变量选择一个XML节点nodeName

上面的代码不起作用。我能想到的唯一解决方案是这样的:

<x:forEach var="node" select="$doc//*[name()='item']/*">
    <c:set var="nameTest"><x:out select="name($node)" /></c:set>
    <c:if test="${nameTest == nodeName}>
        <x:out select="$node" />
    </c:if>
</x:forEach>

这是不是一个完美的解决方案,实际上让我有种愤怒来看待。

有人有更好的主意吗?

为了获得更多的乐趣,我坚持使用JSTL 1.0


阅读 302

收藏
2020-06-08

共1个答案

小编典典

找到了答案:

使用JSTL数据作为XPath变量

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

来自JSTL快速参考表(pdf)

所以我的代码变成:

<x:set var="theNode" select="*[name()=$pageScope:nodeName]" />
<x:out select="$theNode" />
2020-06-08