簡體   English   中英

Thymeleaf:使用與來自不同控制器的動態URL相同的模板

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM