0

比方说..我有以下java bean。

案例1:(学生豆)

Integer id;

String name;

ArrayList<String> subjectNameList;

并使用上面的 case1 结构,我可以用这样的方式在显示标签中显示。

<displaytag:table class="displayTable" id="studentList" name="studentist">
<displaytag:column property="id" title="id"/>
<displaytag:column property="name" title="name"/>
<displaytag:column property="subjectNameList" title="subjectNameList"/>
</displaytag:table>

但是现在由于变化,学生豆变成了这样。

案例2:(学生豆)

 Integer id;

 String name;

 ArrayList<Integer> subjectIdList;

所以,在显示标签表中,我知道我不能再直接显示主题名称列表,因为那不再是学生 bean 的属性。

我的问题是..有没有办法在显示标签中显示主题名称列表,例如 Case1 中的显示标签(可以在 Action 类中通过并传递给每个学生 bean 的显示标签)?因为在 Case2 中,列表更改为 ID(整数)列表。我想在显示标签的 jsp 页面中保持相同的外观。

4

1 回答 1

1

您可以扩展TableDecorator来处理案例 2,如案例 1。有关装饰器的更多信息

上述案例的示例 TableDecorator 实现:

public class StudentBeanDecorator extends TableDecorator {

    public String subjectNames()
    {
        StudentBean studentBean = (StudentBean)getCurrentRowObject();
        ArrayList<Integer> subjectIdList = studentBean.getSubjectIdList();

        // make a service call or as you like
        ArrayList<String> subjectNameList = studentService.getSubjectNameList(subjectIdList);

        // format the data as you want; here for sample, just doing comma separated string
        return Arrays.toString(subjectNameList.toArray());;
    }
}

并将装饰器映射到 display:table 标签

<displaytag:table class="displayTable" id="studentList" name="studentist" decorator="com.sample.student.StudentBeanDecorator">
    <displaytag:column property="id" title="id"/>
    <displaytag:column property="name" title="name"/>
    <displaytag:column property="subjectNames" title="subjectNames"/>
</displaytag:table>
于 2012-12-30T18:00:08.377 回答