В моем проекте Spring Boot 2 у меня есть фрагменты Thymeleaf для генерации элементов формы.Например:
<input th:replace="component/admin_form :: text (formElement = ${vm.getElementStatus()}, class='css-class-a'))" />
Приведенный выше код генерирует сложный блок div с меткой, полем ввода и блоком ошибок.
Я хотел бы упростить этот синтаксис.Моя идея состояла в том, чтобы создать собственный диалект с пользовательским тегом и написать это:
<admin-form:text value="${vm.getElementLastName()}" class="css-class-a"/>
Второй текст легче читать, он четко указывает дизайнерам, что это особый элемент.Кроме того, было бы легче изменить темы, так как мне нужно только изменить местоположение конкретного фрагмента в процессоре тегов, а не сотни: заменить значение.
Также важно, чтобы я не хотелпостроить сложную HTML-макет в процессоре тегов просто хотите как-то импортировать фрагмент.Таким образом, дизайнеры могут изменять фрагмент HTML без изменения кода Java.
Мне удалось создать собственный диалект и создать собственный тег, который генерирует блок HTML:
@Override
protected void doProcess(ITemplateContext context, IProcessableElementTag tag, IElementTagStructureHandler structureHandler) {
final IModelFactory modelFactory = context.getModelFactory();
final IModel model = modelFactory.createModel();
model.add(modelFactory.createOpenElementTag("div", "class", "test"));
model.add(modelFactory.createText("This is my custom element"));
model.add(modelFactory.createCloseElementTag("div"));
structureHandler.replaceWith(model, false);
}
Но я нене знаю, как импортировать фрагмент в мой пользовательский тег.
Возможно ли это как-нибудь?