[英]Thymeleaf: use the same template with dynamic url from different controllers
我有兩個html模板,它們執行相同的功能,但由兩個不同的控制器處理:
第一個html由主持人控制器處理
<form th:action="@{/moderator/new-user-form}" th:object="${caltest}" method="post"
enctype="multipart/form-data" class="form-validate form row">
<!-- some code -->
</form>
第2個html由管理員控制器處理
<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}"
是否可以使用來自不同控制器的動態URL的相同模板?
有許多不同的方法可以做到這一點......最簡單的方法是在控制器中使用相同的模板,並在每個控制器中傳遞包含正確操作的變量。
例如:
// 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')" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.