首页 > 解决方案 > 如果表单输入未明确使用它,如何设置 Spring Form 和 Thymeleaf 以不更改作为模型属性添加的对象字段?

问题描述

如果我有 DTO 对象,则在控制器中添加为属性模型。它有两个商业档案,比如说

public class Owner {
    private Long id;

    private String firstName;
    private String secondName;
}

在某些春季表格中,我只想更改名字,但仍将所有者用作 DTO,而此表格根本没有第二个名字输入。而且我也不想出于隐私原因将第二个名字作为隐藏输入放置在表单中,例如,所以我只有处理表单中第一个名字的输入?有没有办法将 DTO 放置到具有名字和名字的模型中,并且在 @PostMapping 控制器方法中仍然在方法的 @ModelAttribute 参数对象中同时获得名字和名字?在这种情况下,我的第二个名字为 null。

标签: javaspringspring-mvcthymeleafspring-form

解决方案


如果模型是通过 addAttribute("owner", owner) 将模型添加到模型属性中,则 @SessionAttribute("owner") 注释在 @Controller 标记的类上以及在控制器方法参数中使用 @ModelAttribute("owner") ownet 是有帮助的决定。使用@SessionAttribute,表单不会清除所有字段都设置为空值的数据。

需要明确命名 @ModelAttribute("named_via_here") 与 @SessionAttribute("named_via_here") 相同(没有它也可以工作,但不能保证)


推荐阅读