【问题标题】:c:set is not working in JSTL 1.2c:set 在 JSTL 1.2 中不起作用
【发布时间】:2013-09-16 14:08:42
【问题描述】:

我正在制作一个基于 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 中的错误

【问题讨论】:

    标签: xml jstl


    【解决方案1】:

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

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

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

    参考文献

    【讨论】:

      猜你喜欢
      • 2012-01-13
      • 1970-01-01
      • 1970-01-01
      • 2015-11-21
      • 1970-01-01
      • 2012-07-15
      • 1970-01-01
      • 2015-07-20
      相关资源
      最近更新 更多