如何在Struts2中进行迭代时访问作为Hashset的对象的属性值

时间:2013-12-06 14:30:53

标签: java jsp struts2 ognl

我正在努力学习,对struts2标签没有超强的知识。我知道当访问集合中的对象的属性值时,你迭代集合(在我将放置的示例中是“products”)然后你可以访问属性(甚至可以是一个对象,在我的case是图片):

<s:iterator value="products">
  <img src="<s:property value="image.route"/>"/>
</s:iterator>

当产品集合携带的对象内部带有带有图像的HashSet时,问题出现了:

public class Product implements java.io.Serializable{
    ...
    private Set images = new HashSet(0);
    ...
}

所以问题是:我现在如何访问图像的路径???除此之外,还有几个图像,我只想要一个名为“main”的布尔参数标记为true的图像,因为其他图像在幻灯片中是次要的。

非常感谢所有帮助。

3 个答案:

答案 0 :(得分:0)

你走了:

<s:iterator value="products">
  <s:iterator value="images">
     <s:property value="main"/>
     <s:property value="route"/>
     <s:if test="main==true">
           //other code
     </s:if>
  </s:iterator>
</s:iterator>

答案 1 :(得分:0)

之前未使用Struts标签,但对于产品的MAIN图像,您可以执行以下操作:

public class Product implements java.io.Serializable{
    ...
    private Set images = new HashSet(0);
    ...

    // Public a getter for main image -> Easy to access 'mainImage' in JSTL
    public Object getMainImage() {
        // Find your main image here. You can replace Object by your image type.
    }
}

答案 2 :(得分:0)

使用OGNL selection

<img src="<s:property value="images.{? #this.main == true}[0].route"/>"/>

并进一步阅读选择第一场比赛

<img src="<s:property value="images.{^ #this.main == true}.route"/>"/>