gpt4 book ai didi

java - Thymeleaf:使用相同的模板和来自不同 Controller 的动态 url

转载 作者:行者123 更新时间:2023-11-29 04:30:46 26 4
gpt4 key购买 nike

我有两个 html 模板,它们具有相同的功能,但由两个不同的 Controller 处理:

第一个 html 由版主 Controller 处理

<form th:action="@{/moderator/new-user-form}" th:object="${caltest}" method="post"
enctype="multipart/form-data" class="form-validate form row">
<!-- some code -->
</form>

第二个 html 由管理员 Controller 处理

<form th:action="@{/admin/new-user-form}" th:object="${caltest}" method="post"
enctype="multipart/form-data" class="form-validate form row">
<!-- some code -->
</form>

如您所见,这些模板仅在 action url 上有所不同:

th:action="@{/someurl}"

是否可以对来自不同 Controller 的动态 url 使用相同的模板?

最佳答案

有许多不同的方法可以做到这一点...最简单的方法是在 Controller 中使用相同的模板,并在每个 Controller 中传递一个包含正确操作的变量。

例如:

// Moderator controller
@RequestMapping(value = "/moderator")
public String moderator(Map<String, Object> model) {
model.put("action", "/moderator/new-user-form");
return "new-user-form";
}

// Admin controller
@RequestMapping(value = "/moderator")
public String moderator(Map<String, Object> model) {
model.put("action", "/admin/new-user-form");
return "new-user-form";
}

在 html 中

<form th:action="@{${action}}">

如果这不合适,您可以将表单本身变成一个片段,然后将操作作为参数传递。像这样:

<!-- Fragment -->
<form th:fragment="userform (action)" th:action="@{${action}}">
.
.
.
</form>

<!-- Including the fragment -->
<div th:replace="fragments/userform :: userform(action='/admin/new-user-form')" />
<!-- or -->
<div th:replace="fragments/userform :: userform(action='/moderator/new-user-form')" />

关于java - Thymeleaf:使用相同的模板和来自不同 Controller 的动态 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43866925/

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