gpt4 book ai didi

java - Thymeleaf + Spring boot 如何避免使用 GET 请求创建实例

转载 作者:行者123 更新时间:2023-12-01 18:42:37 26 4
gpt4 key购买 nike

学习Spring,偶然发现一个误区

发送时有一个包含两个字段“姓名”和“年龄”的表单,将创建一个用户对象并将其放置在列表中,然后显示在主页上

一切都很好,但是在 Thymeleaf + Spring boot bundle 中,需要使用每个 GET 请求创建用户模型的实例,如下例所示,即该对象在到达列表之前创建了两次对于我来说,这不是很好

那么,如何做到这一点(使用 Thymeleaf)以便不会在每次 GET 请求时都创建该对象?

@GetMapping("/new")
public String add(User user){ // first instantiation of User
return "new";
}
@PostMapping("/new")
public String addUser(@ModelAttribute User user) { // second instantiation of User
users.add(user);
return "redirect:/home";
}

最佳答案

首先,您没有实例化 User 类。在您的示例中,它只是方法的参数。

如果没有看到更多代码,可能很难回答您的问题,但让我们看一下。

您提到过:

everything is fine, but in the Thymeleaf + Spring boot bundle there is a need to create an instance of the user model with each GET request, as in the example below, i.e. the object is created twice before it gets to the list and as for me it is not very good

其实没有这个必要。您需要在 POST 方法中包含这样的参数。所以你可以从 add 方法中删除它,然后它应该如下所示:

@GetMapping("/new")
public String add(){
return "new";
}

在上面的示例中,应该有一个 new.html 模板文件,我认为它是在您的案例中添加新用户的表单。

编辑:
由于这是一个表单,因此它应该绑定(bind)到对象。因此,您需要使用模型,然后将登录对象添加到模型中:

@GetMapping("/new")
public String add(Model model){
model.addAttribute("login", new Login());
return "new";
}

关于java - Thymeleaf + Spring boot 如何避免使用 GET 请求创建实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59895439/

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