将参数从c:out标记传递给struts s:text标记

时间:2013-09-16 13:35:21

标签: java xml jsp struts2 jstl

该项目基于Struts2

我正在使用XML制作动态菜单库。将解析此XML并构建最终菜单。

XML是:

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

我使用JSTL来解析XML

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<x:forEach select="$docRoot/menus/menu" var="menuvar">
    <c:set var="menuName">
        <x:out select="$menuvar/name" />
    </c:set>    
    <c:out value="${menuName}"/>
    <s:text name="%{menuName}" />
    ..... // s:url shoul also be called
</x:forEach>

问题是c:out标记显示正确的值menu.level1.Home我将此参数传递给s:text以从struts资源包中获取值。但它没有用。

那么,问题是如何将参数从c:set传递到s:text

顺便问一下,有没有更好的解决方案来制作XML菜单?

1 个答案:

答案 0 :(得分:1)

尝试

<s:property value="%{#attr.menuName}" />

不确定xml,但您可以从sj:menu标记

构建菜单