Thymeleaf自定义方言与片段

时间:2018-11-22 14:05:39

标签: spring-mvc thymeleaf

在我的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"/>

第二个更容易阅读,它清楚地指示设计者这是一个特殊的元素。除此之外,更改主题会更容易,因为我只需要更改标签处理器中具体的片段位置,而不需要数百个th:replace值。

同样重要的是,我不想在标签处理器中构建复杂的html布局,而只是想以某种方式导入片段。因此,设计人员可以在不更改Java代码的情况下修改html片段。

我能够创建自定义方言并创建用于生成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);
} 

但是我不知道如何在我的自定义标签中导入片段。

有可能吗?

0 个答案:

没有答案