我正在基于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中的错误
答案 0 :(得分:1)
x:set
的语法使用XPath变量语法引用$menuVar
,但menuVar
是JSTL变量。它应该是:
<x:set select="$pageScope:menuvar/name" var="menuName1" >
使用JSTL数据作为XPath变量 可以在XPath表达式($ implicitObject:variableName)中使用Scoped变量,类似于它们在EL中的使用方式($ {implicitObject.variableName})。如果省略隐式对象,则将按标准顺序搜索范围。请注意,“。”和“[]”符号不能用于访问bean属性。
<强>参考强>