gpt4 book ai didi

spring - 如何在 Thymeleaf 片段中将 Spring 模型属性作为参数传递

转载 作者:IT老高 更新时间:2023-10-28 13:45:58 24 4
gpt4 key购买 nike

我有一个简单的基于 CRUD thymeleaf 的 html 页面,其中有一个 worker 列表和 worker 详细信息。现在我想创建、编辑或删除一个 worker 。对于此操作,我使用 twitter 引导模式对话框。

这很好用,但我有很多重复,所以我想创建一个 th:fragment,其中包含在详细信息 View 、创建 View 和编辑 View 中相同的表单字段。只是 Spring 模型属性不同。

<div th:fragment="workerForm(formId, formAction, worker)">
<form th:id="${formId}" th:action="${formAction}" class="form-horizontal" method="post" role="form">
<div class="form-group">
<label for="inputGivenName" class="col-sm-2 control-label">Givenname</label>
<div class="col-sm-10">
<input id="inputGivenName" type="text" class="form-control" th:field="${worker.givenName}"/>
</div>
</div>
<div class="form-group">
<label for="inputName" class="col-sm-2 control-label">Name</label>
<div class="col-sm-10">
<input id="inputName" type="text" class="form-control" th:field="${worker.name}"/>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<div class="checkbox">
<label>
<input type="checkbox" th:field="${worker.active}"/> Active
</label>
</div>
</div>
</div>
</form>
</div>

现在我想在模态对话框中包含这个片段...

<div class="modal-body">
<div th:include="workerFragments :: workerForm(newWorkerForm, @{/worker/new}, ${newWorker})"></div>
</div>

是否可以将模型属性 newWorker 作为参数传递到片段中,而 thymeleaf 将使用它而不是 ${worker}

NewWorker 在 spring Action 中设置为:

....
model.addAttribute("newWorker", new WorkerDTO());
....

上面的代码是不可能的。这里 thymeleaf 想要解析 worker 而不是传入的 newWorker。参数应该是另一种格式,还是 thymeleaf 片段无法解决这个问题?

最佳答案

我通过将字段名称传递到片段而不是传递属性本身解决了类似的问题。因此,从您的包含中,您将编写如下内容:

<div class="modal-body">
<div th:include="workerFragments :: workerForm(newWorkerForm, @{/worker/new}, 'newWorker')"></div>
</div>

然后对于您的片段,您将拥有相同的“worker”片段变量,但您必须使用预处理器来评估片段中的变量,然后您可以使用表单支持语法来使用 th:field .您在片段中的引用从 ${worker} 更改为 *{__${worker}__}

<div th:fragment="workerForm(formId, formAction, worker)">
<form th:id="${formId}" th:action="${formAction}" class="form-horizontal" method="post" role="form">
<div class="form-group">
<label for="inputGivenName" class="col-sm-2 control-label">Givenname</label>
<div class="col-sm-10">
<input id="inputGivenName" type="text" class="form-control" th:field="*{__${worker}__.givenName}"/>
</div>
</div>
<div class="form-group">
<label for="inputName" class="col-sm-2 control-label">Name</label>
<div class="col-sm-10">
<input id="inputName" type="text" class="form-control" th:field="*{__${worker}__.name}"/>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<div class="checkbox">
<label>
<input type="checkbox" th:field="*{__${worker}__.active}"/> Active
</label>
</div>
</div>
</div>
</form>
</div>

关于spring - 如何在 Thymeleaf 片段中将 Spring 模型属性作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22833490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com