Вы можете попробовать с открытым исходным кодом Библиотека Formio . Он может использоваться во многих средах / инфраструктурах и с различными шаблонными структурами.
С помощью Formio вы можете манипулировать формами с помощью объектов: создавать определения форм - отображения, определения полей форм и вложенные отображения (для вложенных объектов, таких как адрес человека или список адресов). Оба отображения и поля формы могут быть определены как повторно используемые (неизменяемые) объекты и составлены вместе. Вы можете использовать вложенные отображения для моделирования многократно используемых «групп» полей формы (и для их вложения в другие группы).
Formio поддерживает привязку данных из объекта Java к определению формы, которое затем может быть передано в шаблон и обработано. Данные из запроса могут быть проверены (с использованием API проверки бина) и привязаны к объекту Java (к вновь созданному экземпляру или к предоставленному). Поддерживается связывание базовых типов Java, типов вложенных объектов, коллекций или массивов (примитивов или сложных объектов). Могут использоваться неизменные классы.
Определение формы может быть предварительно заполнено данными (перед передачей в шаблон) и заполнено (подтверждено) данными из запроса. Автоматическое связывание двунаправленных данных реализовано в методах «fill» и «bind» объекта определения формы.
Formio - это серверно-ориентированная библиотека, но ее можно комбинировать с существующими клиентскими библиотеками. Рендеринг оставлен системе шаблонов. Например, используя JSP, вы можете подготовить свои собственные повторно используемые теги для отображения определения формы, заполненного данными и их частями (вложенные отображения, различные типы полей формы), которые уже содержат все необходимые данные для отображения, в том числе такие флаги, как видимый, включенный, только для чтения, требуется. Вы можете определить свои собственные атрибуты настраиваемых полей и использовать их в повторно используемых тегах / фрагментах шаблона, чтобы в большинстве случаев код HTML не нужно было изменять.
Примечание: я являюсь автором библиотеки, вы можете найти исходники на GitHub и сделать свой форк. Проверьте документацию для получения более подробной информации.