Генерация HTML/CSS/JS-представлений (форм) на основе Java-моделей
От: halo Украина  
Дата: 15.04.19 11:59
Оценка:
Привет.

С своё время достался в поддержку и доработку старый и очень плохо спроектированный продукт на Spring MVC и представлениях на JSP/JSTL. В плане реализации нового функционала особых проблем не возникало, но с переписыванием сущесвующего кода постоянно получаются проблемы той или иной степени тяжести.

На данный момент есть острая проблема, скажем так, переосмысления старого кода, отвечающего за рендеринг форм, общее число которых достигает порядка 50. Сложность всех форм может варьироваться от совсем простых (с одним-двумя флажками) до весьма изощрённых (в плохом смысле этого слова). Существующую процедуру построения таких форм грубо говоря можно представить следующим алгоритмом:

1) Взять ORM-сущность.
2) Без каких-либо DTO отобразить её с помощью GET-обработчика и жуткого JSP-шаблона в виде формы, где разметка для каждого свойства описывается вручную раз за разом.
3) Скопировать существуюший JavaScript-код, отвечающий за взаимодействие с пользователем, и привязать его к новым элементам формы (снова же, всё вручную).
4) С помощью JavaScript и jQuery реализовать live-валидацию без отправки объекта на сервер.
5) На JavaScript реализовать сериализацию и отправку объёкта на сервер.
6) Принять объект на сервере с помощью POST-обработчика, сохранив его в базу.

По большому счёту, типичное CRUD-приложение, но с кучей очень странной отсебятины на JavaScript на разные случаи жизни.

Интересует следующее: существует ли готовый подход, который позволил бы полностью избавиться от хотя бы половины шагов описанных выше? Мне представляется это примерно в таком виде:

1) Взять ORM-сущность.
2) Создать для неё на сервере некую DTO/view-модель, описывающую, каким образом должно быть представлено пользователю то или другое свойство. Например, DTO с полями и аннотациями для представления полей (текстовое поле, выпадающий список, что-то из HTML5 и т.д.), а также набором аннотаций из javax.validation. (Механизм преобразования из ORM-сущности в такую модель и обратно не имеет значения.)
3) Сгенерировать на лету или отдать уже готовые (к примеру, созданный даже в build-time?): HTML-документ, CSS-стили и JavaScript-код, умеющий валидировать входные данные на лету, желательно без отправки данных на сервер, хотя и этим можно принебречь.
4) Принять от пользователя изменённый объект, предварительно проверив его по правилам валидации.

Т.е., хотелось бы в Java-коде декларировать некие требования к представлению свойств объекта с минимальными усилиями при описании новых таких объектов в идеале вообще без кода в JSP или JS-файлах (за исключением "описать новый виджет", конечно). Существует ли вообще что-то подобное? Спасибо.
spring-mvc jsp jquery javascript validation dto codegen java
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.