当值可能为null时,JSP迭代列表的映射

时间:2012-07-01 15:13:42

标签: jsp struts2 guava

如何清除s: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>

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

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

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

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

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