#java #list #oop #web #model-view-controller
Вопрос:
Работая над языком ООП (объектно-ориентированного программирования), таким как Java, я хотел бы реализовать способ отображения любого объекта из моей модели в представлении (веб, построенный на каком-либо движке представления, таком как thymeleaf или аналогичном.
Чтобы перечислить 1 отдельный класс, мне нужно только создать экземпляр ArrayList<MyClass>
привязки к представлению и отобразить данные в определенной разработанной таблице (количество столбцов равно количеству свойств, для каждого элемента в списке-соответствующая строка в таблице).
Можно ли реализовать столбец: 1 Для каждого свойства в структуре класса?
Это вид структуры представления, который я пытаюсь:
<table>
<thead><tr>
<td th:each="column : ${columns}" th:text="${column.tag}"></td>
</tr></thead>
<tbody>
<tr th:each="elem : ${elements}">
<td th:text="..."></td>
</tr>
</tbody>
</table>
Это контроллер, на котором я создаю образцы данных:
@RequestMapping(value = "/listurl", method = RequestMethod.GET)
public ModelAndView multiColumn(Model model){
List<Column> columns = Arrays.asList(new Column[]{
new Column("textprop", 4),
new Column("booleanprop", 2),
new Column("dateprop", 3),
new Column("integerprop", 1),
new Column("decimalprop", 5)
});
List<Element> elements = Arrays.asList(new Element[]{
new Elemento( "Entry", true, new Date(), 1, 2.2)
});
Collections.sort(columns, new Comparator<Column>() {
@Override
public int compare(Column o1, Column o2) {
if (o1.getOrder() == o2.getOrder()) {
return 0;
} else {
return (o1.getOrder() > o2.getOrder() ? 1 : - 1);
}
}});
model.addAttribute("columns", columns);
model.addAttribute("elements", elements);
return new ModelAndView("listview");
}
Итак, я придумал этот класс столбцов, который я определяю с помощью 2 свойств:
String tag
и int order
Класс элемента содержит по одному свойству каждого класса, я даю имя свойства тегу столбца.
Комментарии:
1. но что ты хочешь увидеть? строковое представление? икону? что-то еще?
2. Свойствами @AminM могут быть текст, числа различных типов, логические значения, которые я мог бы проанализировать или отформатировать в удобочитаемом «Да/нет», но это не главная проблема, с которой я сталкиваюсь (я мог бы вставить какой-то dto, который анализирует все до строк). Интересно, как обрабатывать представление столбца с переменным числом.
3. Я обновил некоторые примеры кода, которые я пишу, чтобы попробовать ответить на этот вопрос.