0

たとえば、次の Java Bean があります。

Case1: (学生ビーン)

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>

しかし、現在の変更により、学生 Bean はそのようになります。

Case2: (学生ビーン)

 Integer id;

 String name;

 ArrayList<Integer> subjectIdList;

したがって、表示タグ テーブルでは、学生 Bean のプロパティではないため、サブジェクト名リストを直接表示することはできません。

私の質問は..ケース1のように表示タグでサブジェクト名リストを表示する方法はありますか(アクションクラスで取得し、各学生Beanの表示タグに渡すことができます)? Case2 では、リストが ID (整数) リストに変更されるためです。表示タグのjspページで同じルックアンドフィールを維持したい。

4

1 に答える 1

1

TableDecoratorを拡張して、ケース1と同様にケース2を処理できます。デコレータの詳細

上記の場合の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 に答える