首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Struts 2-在map中保存map中的值

问Struts 2-在map中保存map中的值
EN

Stack Overflow用户
提问于 2013-05-25 05:02:06
回答 1查看 939关注 0票数 3

我目前正在使用Struts2,我遇到了这样的情况:

在我的Action类中:

代码语言:javascript
复制
private Map<String, Map<Integer, MyEntity>> map; 

public void setMap(Map<String, Map<Integer, MyEntity>> map) { 
      this.map = map; 
} 

public Map<String, Map<Integer, MyEntity>> getMap() { 
      return this.map; 
} 

在我的JSP中,我使用迭代器通过'key‘变量遍历映射,然后遍历另一个列表(整数),并使用这个整数遍历第二个映射,如下所示:map[${key}][${myInteger}]

代码语言:javascript
复制
<s:iterator value="map" status="status"> 
  <tr> 
    <td>${status.index}</td> 
    <td>${key}</td> 
    <s:iterator value="integersList" id="myInteger"> 
      <td> 
        <s:textfield name="map[${key}][${myInteger}].myEntityAttribute" value="%{map[#attr.key][#attr.myInteger].myEntityAttribute}" id="attr_${key}_${myInteger}" theme="simple" size="10" /> 
      </td> 
    </s:iterator> 
  </tr> 
</s:iterator>

这样做可以很好地获得值:value="%{map[#attr.key][#attr.myInteger].myEntityAttribute}"

但是,当我想要保存更改时,我无法使其工作:name="map[${key}][${myInteger}].myEntityAttribute"

我不知道我做错了什么,或者这是不是做不到(我很确定一定有办法),但我有点累了。

我将感谢任何建议,真的,任何可以帮助的东西都是受欢迎的。

EN

回答 1

Stack Overflow用户

发布于 2013-05-28 05:47:38

简而言之,使用Struts缺省类型转换器也就是XWorkConverter是不可能的。它正在寻找bean属性来执行它们的转换。

还支持集合转换,并且还有一个CollectionConverter,您可以使用它来处理与您的集合类似的集合。

为此,您应该在xwork-conversion.properties中为相应的集合类配置转换器。它是struts转换器使用的转换的全局属性。如果您不这样做,Struts将使用ognl.ConvertionNotSupported exception处理您的字段。您可以通过为您转换的类型放置自己的类型转换器来消除它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16743610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档