如何在struts 2中的<s:text>中使用<s:property>标签</s:text> </s:property>

时间:2012-07-11 00:17:13

标签: jsp struts2

我可以在Struts 2中的 s:text 标记中使用 s:property 标记。问题是,我的Action类中有Map

Map menuMap = new HashMap<String, String>();
menuMap.put("home()", "lbl.home.home");
menuMap.put("mymodule()", "lbl.home.mymodule");
menuMap.put("adduser()", "lbl.home.adduser");
menuMap.put("changepassword()", "lbl.home.chngPwd");

地图的键/值为String,地图中存在的值是application.properties文件中存在的键请参见下文
这是我的Application.properties文件

lbl.home.home                       = Home
lbl.home.adduser                    = Add User
lbl.home.mymodule                   = My Module 
lbl.home.chngPwd                    = Change Password 

现在我想在我的jsp中迭代这个地图,并希望从属性文件中获取这些值,方法是将map的值作为application.properties文件中的键传递并将它们显示为标签
我是能够获取密钥但无法显示属性文件中的值 这是我的Jsp代码:

<s:iterator value="menuMap">
 <tr>
   <td>
    <a href="#" onclick="<s:property value="key"/>" ><s:text name="<s:property value='value'/>"/></a>
   </td>
</tr>
</s:iterator>

现在问题是,我能够看到,如果我查找页面源, 标签和在onclick()上调用的函数名称,但无法将文本视为标签。我错过了什么,请帮助我 感谢

1 个答案:

答案 0 :(得分:9)

它实际上比你正在尝试的更简单。由于text标签是Struts2标签,name属性支持OGNL表达式,因此不需要使用property标签来获取名称,只需要OGNL:

<a href="#" onclick="<s:property value="key"/>" ><s:text name="%{value}"/></a>