让我们说..我有以下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(整数)列表。 我想在display标签的jsp页面中保持相同的外观和感觉。
答案 0 :(得分:1)
您可以扩展TableDecorator以处理案例2,例如案例1.有关Decorators的更多信息
以上案例的示例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());;
}
}
并将装饰器映射到:table tag
<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>