如何使用Thymeleaf将标记插入片段

时间:2016-12-27 19:17:16

标签: thymeleaf

我想声明一些布局用作所有表单字段的模板。

因此大致给出了这个片段

<div th:fragment="control(input)" class="form-group">
    <label class="col-sm-3 control-label">Edition description</label>
    <div class="col-sm-9">
        <input th:replace="${input}">
    </div>
</div>

这个片段&#34;调用&#34;

<div th:replace=":: control(~{:: input})">
    <!--Want to reference this one, not all inputs-->
    <input th:field="*{editionDescription}" type="text" class="form-control"  placeholder="перераб., дополн.">
</div>

它会产生以下结果:

<div class="form-group">
    <label class="col-sm-3 control-label">Edition description</label>
    <div class="col-sm-9">
        <input th:field="*{editionDescription}" type="text" class="form-control"  placeholder="перераб., дополн.">
    </div>
</div>

问题是:: input输入选择器应用于当前处理的模板中的所有<input>标记。我如何仅参考随附的?

此外,您是否可以就如何处理此问题提出建议。我想尽可能地模仿Grails Fields插件。你认为我最好宣布自己的方言吗?

1 个答案:

答案 0 :(得分:0)

您应该为输入元素 (要替换的元素)定义类(或标识符),然后可以使用适当的选择器语法只是为了选择所需的输入。您可以在here

中找到选择器语法的详细信息

示例代码如下:

<div th:fragment="control(input)" class="form-group">
    <label class="col-sm-3 control-label">Edition description</label>
    <div class="col-sm-9">
        <input th:replace="${input}">
    </div>
</div>

然后您的选择器应类似于:

<div th:replace=":: control(~{:: input.description})">
    <!--Want to reference this one, not all inputs-->
    <input th:field="*{editionDescription}" type="text" class="form-control description"  placeholder="перераб., дополн.">
</div>

请注意使用 :: input.description 作为具有类标识符的选择器