当前位置: 首页 > 知识库问答 >
问题:

如何将带有thymeleaf的对象传递给java spring控制器?

习旻
2023-03-14

如果对象为NULL,则无法传递对象项目。如何将对象从HTML传递给spring控制器?

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>Home</title>
    </head>
    <body>
        <form action="/addproject" method="POST">
            <input type="hidden" name="project" th:value="${project}"/>
            <input type="submit" value="Save Project" class="submit">
        </form>
    </body>
</html>
@Controller
public class ProjectController {

    @GetMapping("/")
    public String indexPage(Model model) {
        model.addAttribute("project", new Project("Test", "Test"));
        return "index";
    }

    @PostMapping("/addproject")
    public String add(WebRequest webRequest) {
        Project p = (Project) webRequest.getAttribute("project", WebRequest.SCOPE_REQUEST);
        return "index";
    }
}

共有1个答案

云啸
2023-03-14

我建议你先处理这里的文件。

与另一个答案一样,您对ModelandView没有要求或问题。

第一次调用/project页面时,项目类信息将由@getmapping加载,如果需要,在更改和提交时将由@postmapping捕获。

<!DOCTYPE HTML>
<html xmlns:th="https://www.thymeleaf.org">
<head>
    <title>Project Form</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>Project Form</h1>
<form method="post" th:action="@{/project}" th:object="${project}">
    <p>Name: <input type="text" th:field="*{name}" /></p>
    <p>Description: <input type="text" th:field="*{description}" /></p>
    <p><input type="submit" value="Submit" /> </p>
</form>
</body>
</html>
public class Project {

    private String name;
    private String description;

    public Project(String name, String description) {
        this.name = name;
        this.description = description;
    }

    // getter/setter ...
}
@Controller
public class ProjectController {

    @GetMapping("/project")
    public String greetingForm(Model model) {
        model.addAttribute("project", new Project("PN1", "PD1"));
        return "add-project";
    }

    @PostMapping("/project")
    public String greetingSubmit(@ModelAttribute Project project, Model model) {
        model.addAttribute("project", project);
        return "add-project";
    }
}
 类似资料:
  • 问题内容: 在MVC4中,如何将javascript对象传递给AJAX中的C#控制器?最后,我尝试了一下,但没有成功。 Javascript客户端: C#服务器端方法: 我的参数始终为null。我试图更改contentType,但仍然无法正常工作。我的错误在哪里?我找到了一些帖子,但没有发现我做错了什么。 非常感谢。 问题答案: 确保javascript和C#模型之间的属性名称匹配。在你的问题,你

  • 问题内容: 我正在将一个对象传递给我的控制器,如下所示: 我的控制器将其视为它正在寻找的对象: 我的问题是我只想再传递一个字符串。我知道我可以制作特定于视图的模型,但我想知道是否可以执行以下操作: 我没有运气就尝试了以下方法: 但是复杂对象只是作为null来的。有没有办法我也可以传递对象和字符串? 问题答案: 尝试将字符串项添加到已有的JSON中。不要对其进行字符串化,否则它将发送一个大字符串,您

  • 我正在尝试在更改选项后将我的Thymeleaf超文本标记语言中已经提供的List传回控制器。我尝试过隐藏输入,但不幸的是,它还不起作用。 我的表单如下所示(控制器已经提供了“电影”列表) 我的控制器看起来像这样: 期待有人能帮助我!

  • 问题内容: 我想将一个对象传递给控制器​​,并在控制器中检索值。我定义如下: HTML代码: Javascript: 但是我无法在控制器中检索值。它越来越空。 问题答案: 尝试以下操作:-您正在传递对象数组,因此您应该执行HTTPPost而不是HttpGet(这将适用于通过查询字符串发送它的原始类型数组,例如int,strgin等列表)(请记住查询字符串的限制)。尝试使用HTTPPost

  • 我想将两个对象从thymeleaf表单传递到控制器。这是我的ThymileAF代码: 在表单中,除了这里实际提交的付款对象之外,我想将学生对象或id传递给我的控制器,因为任何付款都应该对应于特定的学生。我找了很多,直到现在才找到办法。 PaymentController方法,我希望在其中传递对象,因为我使用提交表单,所以无法在th:action中传递变量 请建议。我被困在这里了

  • 我想通过使用javascript或jquery或不使用javascript或jquery将thymeleaf下拉选择的值传递给spring boot控制器