如何一起使用struts <s:iterator>和<s:if>?</s:if> </s:iterator>

时间:2013-01-01 09:24:38

标签: java jsp struts2 ognl

我有名为allAlbumsallPhotos的对象列表。现在我想显示每张专辑中的所有照片,所以我使用了以下方法。我的代码是

<s:iterator value="allAlbums">
  <s:iterator value="allPhotos">
    <s:if test="%{#allAlbums.albumid == #allPhotos.albumid}">
      <s:property value="photourl"/>
    </s:if>
  </s:iterator>                             
</s:iterator>

但它不起作用。有什么建议我做错了吗?

2 个答案:

答案 0 :(得分:4)

确保您的两个对象都有适当的getter / setter,然后您可以使用OGNL提供的称为投影的功能。

<s:iterator value="allAlbums" var="album">
  <s:iterator value="allPhotos.{? #this.albumid == #album.albumid}">
      <s:property value="photourl"/>
  </s:iterator>                             
</s:iterator>

答案 1 :(得分:2)

您正在引用错误的对象。为您将引用的记录定义var属性,并改为引用它。

<s:iterator var="album" value="allAlbums">
  <s:iterator var="photo" value="allPhotos">
    <s:if test="#album.id == #photo.albumId">
      <s:property value="photoUrl"/>
    </s:if>
  </s:iterator>                             
</s:iterator>