0

我正在基于 xml 制作动态菜单。此 XML 将被解析并构建最终菜单。xml是:

<menus>
    <menu>
        <name>menu.level1.Home</name>
        <action>transfer-to-account-input</action>
    </menu>
    <menu>
        <name>menu.level1.Accounts</name>
        <action>accounts-summary</action>
    </menu>
</menus>

我使用 jstl 来解析 XML。x:set 似乎不起作用!

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml"%>

<x:forEach select="$docRoot/menus/menu" var="menuvar">
    <x:set select="$menuvar/name" var="menuName1" >
    <c:set var="menuName2">
        <x:out select="$menuvar/name" />
    </c:set>
    ${menuName1} //This doesn't show any thing
    ${menuName2} //This works!
</x:forEach>

我是在犯错还是这是 JSTL 1.2 中的错误

4

1 回答 1

1

的语法是使用 XPath 变量语法进行x:set引用,但它是一个 JSTL 变量。它应该是:$menuVarmenuVar

<x:set select="$pageScope:menuvar/name" var="menuName1" >

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

参考

于 2014-07-11T16:21:36.683 回答