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

标签 java html spring-boot controller thymeleaf

我有两个 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/

相关文章:

java - 无法在Java Applet中实现play方法,JMF安装不正确

Javascript 数组在重新加载时重置

html - Lato 字体在 Firefox 中损坏

java - Spring Security 4 防止并发登录不起作用

java - PrimeFaces 4.0 selectOneMenu-ajax-call 适用于 GlassFish 4.0,但不适用于 Tomcat 7.0.27?

java - 为什么我不显示正面按钮

Java Web Service 进行 JPA-MySql 插入,但插入后不进行选择

javascript - 在 css 中为内容可编辑的 div 设置关闭和调整大小按钮的样式,并通过 jQuery 添加 rsize 功能

java - Spring Boot静态文件加载缓慢

java - 如何从库读取.properties文件到spring maven项目