Как бы вы сделали просмотр списка агностиков класса для своего веб-сайта?

#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. Я обновил некоторые примеры кода, которые я пишу, чтобы попробовать ответить на этот вопрос.