Jsp 在Display标记中显示javabean的非属性

Jsp 在Display标记中显示javabean的非属性,jsp,displaytag,struts2,Jsp,Displaytag,Struts2,比如说。。我有下面的javabean 案例1:(学生豆) 整数id; 字符串名; ArrayList主题名称列表; 使用上面的case1结构,我可以用它来显示这样的显示标签 <displaytag:table class="displayTable" id="studentList" name="studentist"> <displaytag:column property="id" title="id"/> <displaytag:column propert

比如说。。我有下面的javabean

案例1:(学生豆)

整数id;
字符串名;
ArrayList主题名称列表;
使用上面的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>

但是现在由于这些变化,学生bean变成了这样

<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:(学生豆)

整数id;
字符串名;
ArrayList主观主义者;
因此,在display标记表中,我知道我不能再直接显示主题名列表,因为这不再是studentbean的属性

我的问题是是否有任何方法可以像案例1中的display标记(可以通过Action类获取并传递给每个学生bean的display标记)那样显示主题名称列表?因为在案例2中,列表更改为ID(整数)列表。 我希望在显示标记的jsp页面中保持相同的外观。

您可以扩展以处理案例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());;
    }
}
公共类StudentBeanDecorator扩展了TableDecorator{
公共字符串subjectNames()
{
StudentBean StudentBean=(StudentBean)getCurrentRowObject();
ArrayList subjectIdList=studentBean.getSubjectIdList();
//打一个服务电话,或者你想怎么打就怎么打
ArrayList subjectNameList=studentService.getSubjectNameList(主题列表);
//根据需要格式化数据;这里是示例,只需执行逗号分隔字符串
返回Arrays.toString(subjectNameList.toArray());;
}
}
和要显示的映射装饰器:表标记

<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>

<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>