Как перебрать List <DTO>и получить значения атрибута DTO динамически? - PullRequest
0 голосов
/ 12 июля 2011
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()));
            }
        }
    }

Я хочу что-то вроде выше.

Я создаю лист Excel, где количество строк соответствует количеству объектов в списке.а количество столбцов соответствует количеству атрибутов / свойств в DTO.

Поскольку у моего DTO более 40 атрибутов, я не хочу писать явно.Есть ли работа вокруг?

Ответы [ 2 ]

2 голосов
/ 12 июля 2011

Вы можете использовать отражение или (лучше) API commons-beanutils (или любой другой, обеспечивающий аналогичную функциональность). Самое простое использование будет выглядеть так:

for (Object property : BeanUtils.describe(yourDto).keySet()) {
    Object value = BeanUtils.getProperty(yourDto, property.toString());
    // do whatever with the property value
}
0 голосов
/ 12 июля 2011

Вы можете использовать API отражения для поиска членов и / или методов.

Если вы буквально хотите принять всех участников, этого вполне может быть достаточно. Если вам нужен какой-то король избирательности, вам может понадобиться сотрудничество с автором DTO, использовали ли они соглашение об именах? Есть ли дополнительные метаданные?

...