我有使用struts2 <s:set>
标记在页面上创建的hashmap。它看起来像这样
<s:set var="mymap" value="#request.mymap"/>
在页面的某个时刻,我需要根据一个键从hashmap中获取一个值,我想用OGNL来做。
密钥是根据某些逻辑生成的,我使用另一个<s:set>
标记存储该逻辑。像这样的东西
<s:set var="mykey" value="1">
我需要使用此键从hashmap中获取值。我需要显示它。
如何在hashmap上调用get函数?
我试过这个
<s:property value="#mymap[#mykey]"/>
和这个
<s:property value="#mymap[%{#mykey}]"/>
和这个
<s:property value="%{#mymap[%{#mykey}}]"/>
由于嵌套问题,第三个显然不起作用 但是由于处理value属性的方式,相同的嵌套逻辑也适用于第二种情况。但似乎没有一个对我有用。
这里的问题是我的钥匙未知。它是基于某种模式的动态生成的字符串。我需要使用此动态密钥访问存储在hashmap中的对象。由于无法嵌套,我处于修复阶段。
我想问题很简单。我几乎觉得我明白了,但不知怎的,解决方案让我不知所措。
答案 0 :(得分:3)
我想我使用的是不同版本的struts,其中使用%{}是要评估的表达式。我现在改变了jar文件。 这就是我的工作:
<s:property value="#mymap.[#mykey2]"/>
我的问题出现了,因为我试图在href中使用它来获取s:标签。如果没有%{}运算符,则表达式未被评估。
所以,我想,我一开始就是对的。剩下的时间,只是我很傻。产品:&gt;
<强>更新强> 我写了一篇关于这个问题的博客文章,以防有人感兴趣。 http://mycodefixes.blogspot.com/2010/11/struts-2-creating-and-accessing-maps.html