2011-07-12 21 views
0
private void writeData(HSSFSheet sheet) { 
     for (int i = 0; i < boltData.size(); i++) { 
      HSSFRow row = sheet.createRow(rowCount); 
      rowCount++; 
      BoltDto boltDto = boltData.get(i); 
      for (int j = 0; j < **${noOfattributesInMyEntity}**; j++) { 
       HSSFCell cell = row.createCell(j); 
       cell.setCellValue(new HSSFRichTextString(
         (**boltDto.getXyz()**).trim())); 
      } 
     } 
    } 

私は上記のようなものが欲しいです。リスト<DTO>を反復処理し、DTO属性値を動的に取得する方法はありますか?

私は、行の数がリスト内のオブジェクトの数に対応するExcelシートを作成しています。列の数はDTOの属性/プロパティの数に対応します。

私のDTOには40を超える属性があるため、明示的に記述したくありません。何か回避策はありますか?

+0

反射を使用してみましたか? – sudmong

+0

'注釈 'を使用しようとしていますか? – dhblah

答えて

2

commons-beanutils API(または同様の機能を提供するもの)のリフレクションを使用することができます。最も簡単な使用法は次のようになります。

for (Object property : BeanUtils.describe(yourDto).keySet()) { 
    Object value = BeanUtils.getProperty(yourDto, property.toString()); 
    // do whatever with the property value 
} 
0

reflection APIsを使用してメンバーや方法を見つけることができます。

文字通りすべてのメンバーを奪取したい場合は、これで十分です。 DTOの作者との協力が必要な場合がありますが、命名規則を使用していますか?追加のメタデータはありますか?

+0

私はDTOの著者です。私は完全なコントロールを持っています。 – HanuAthena

関連する問題