2012-12-28 81 views
0

讓我們說..我有以下的java bean。顯示顯示標記中的java bean的非屬性

情況1:(學生Bean)的

Integer id; 

String name; 

ArrayList<String> subjectNameList; 

並且使用上述情形1的結構,我可以使用在這樣的顯示標記顯示。

<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變成了這樣。

2種情況:(學生豆)

Integer id; 

String name; 

ArrayList<Integer> subjectIdList; 

因此,在顯示標籤表,我知道我可以不再直接顯示的主題名稱列表,因爲這是學生bean的不再財產。

我的問題是...... 有沒有什麼辦法可以在顯示標籤中顯示Case1中的主題名稱列表(可以通過Action類獲取並傳遞給每個學生bean的顯示標籤)?因爲在Case2中,列表更改爲ID(整數)列表。 我想在顯示標籤的jsp頁面中保持相同的外觀和感覺。

回答

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());; 
    } 
} 

和映射裝飾器顯示:表標籤

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