Xml c:set在JSTL1.2中不起作用
我正在制作一个基于xml的动态菜单。将解析此XML并构建最终菜单。 xml是:Xml c:set在JSTL1.2中不起作用,xml,jstl,Xml,Jstl,我正在制作一个基于xml的动态菜单。将解析此XML并构建最终菜单。 xml是: <menus> <menu> <name>menu.level1.Home</name> <action>transfer-to-account-input</action> </menu> <menu> <name>menu.level1
<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>
menu.level1.Home
转入账户输入
menu.level1.Accounts
帐目摘要
我使用jstl解析XML。x:设置似乎不起作用
<%@ 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>
${menuName1}//这没有显示任何内容
${menuName2}//这很有效!
是我犯了错误还是这是JSTL 1.2中的一个错误,
x:set
的语法使用XPath变量语法引用了$menuVar
,但是menuVar
是一个JSTL变量。应该是:
<x:set select="$pageScope:menuvar/name" var="menuName1" >
使用JSTL数据作为XPath变量
作用域变量可以在XPath表达式($implicitObject:variableName)中使用,类似于它们在EL(${implicitObject.variableName})中的使用方式。如果省略隐式对象,将按标准顺序搜索范围。请注意,“.”和“[]”符号不能用于访问bean属性
参考资料