2010-10-12 70 views
2

想象一下具有三个属性的POJO“Employee”。带动态列的Struts2迭代器

public Class Employee{ 
private String id; 
private String name; 
private double salaray; 
} 

我有一个方法,提取员工列表。在jsp中,我使用标签显示列表。

<s:iterator value="listEmployee"> 
<s:property value="id"/> 
<s:property value="name"/> 
</s:iterator> 

正如您所看到的,我在迭代器中只显示了两列。现在在我的情况下,我如何动态地在迭代器中添加字段薪水?

这是一个与我的实际情况相关的小例子。任何人都可以抛出一些光?

+0

请使用“代码”按钮时编辑 – leonbloy 2010-10-12 15:58:45

+0

它不清楚,为什么你需要“动态列”:薪水只是一个斗或者一个数组还是什么? – leonbloy 2010-10-12 16:00:16

+0

在“渲染/显示”意义上是动态的。就像说代码显示一个包含两列ID和名称的表格一样。现在,在一些行动中,我该如何显示薪水栏......? – user473279 2010-10-14 12:07:47

回答

0

我没有看到任何实际的方法。如果您将视图设置为处理这种动态对象,那么可以使用反射来完成,但我会推荐Apache BeanUtils

说你这样做(未测试):

public class Introspector{ 
    private BeanMap properties; 

    public Introspector(){ 
    myProperties = new BeanMap(this); 
    } 

    public Set getProperties(){ 
    return properties.keySet(); 
    } 
} 

做完这些,Employee类应该能够使用它...

public class Employee extends Introspector{ 
    private String id; 
    private String name; 
    private double salaray; 
    //getters setters for above properties 
} 

然后在视图中你可以说...

<s:iterator value="listEmployee"> 
    <s:iterator value="properties"> 
     <s:property> 
    </s:iterator> 
</s:iterator>