我有以下内容:
<html:select property="myObject.value">
<html:options property='myMap(someKey)'/>
</html:select>
在操作中设置map(someKey)
的位置。我也以以下形式创建了这些方法:
public void setMyMap( final Map<String, Collection<String>> map )
{
myMap = map;
}
public Map<String, Collection<String>> getMyMap()
{
return myMap;
}
这几乎似乎有效,但偶尔会在适当的myMap(someKey)
被点击之前访问Action
,从而导致空指针。我在做什么错了,在这里?
修改
如果我使用LazyMap解决此问题,我会避免使用空指针,直到操作设置表单为止。不过,我仍然想知道为什么会这样。
答案 0 :(得分:0)
您如何确定相对于Action触发的访问顺序?由于setMyMap
只存储引用,因此一种可能性是调用者在不同的线程上运行并在设置后修改映射。
答案 1 :(得分:0)
使用LazyMap或升级到Struts 2/3,以便有人可以帮助您。