1

如何从 as:iterator 的堆栈中清除值?

我正在尝试对具有如下结构的 TreeMultimap 进行迭代:

TreeMultimap<person, lineItems> persons;

使用类似的东西:

<s:iterator value="attendeesForParticipantTypeEvents.asMap()">
  <div>
    <s:property value="key.name" /><br />
    <s:iterator var="currentSku" value="value">
      <s:property value="currentSku.name" /><br />
    </s:iterator>
  </div>
</s:iterator>

这工作正常,除非 treeMultimap 的 lineItems 为 null,否则它会从上一次迭代中获取值。

所以,像这样的结构:

persons = {{"Person1",["Line1","line2"]},
           {"Person2",["Line3","line4"]},
           {"Person3",null}}

呈现为:

<div>
   Person1<br />
   Line1<br />
   Line2<br />
</div>
<div>
   Person2<br />
   Line3<br />
   Line4<br />
</div>
<div>
   Person3<br />
   Line3<br />
   Line4<br />
</div>

这似乎表明每个迭代器上的值都没有被清除。我需要做什么来处理 value 可能为 null 的情况?

谢谢你的帮助

4

1 回答 1

1

我建议您在将地图交付给 Struts/JSP 之前对其进行预过滤。关注点分离表明您的表示层不应该做出那种决定。

我相信 Multimap 不能(当然也不应该)有空值;所以你的结构可能是:

persons = {{"Person1",["Line1","line2"]},
           {"Person2",["Line3","line4"]},
           {"Person3",[]}}
于 2012-07-03T06:47:30.843 回答