为了账号安全,请及时绑定邮箱和手机立即绑定

请求绑定不适用于Kotlin类

请求绑定不适用于Kotlin类

喵喔喔 2021-05-19 17:03:16
我有一个表单对象:public class UserFormJava {    @NotNull    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")    private LocalDateTime dateTime;    public LocalDateTime getDateTime() {        return dateTime;    }    // getter, setter}我有一个简单的控制器:@RequestMapping("/users")@Controllerpublic class UserController {    @PostMapping("")    public String postForm(@Valid UserForm userForm, BindingResult bindingResult) {        System.out.println(userForm + " " + bindingResult);        return "/users/form";    }}它工作正常。但是userForm如果我像这样在Kotlin中重写UserForm,绑定将不起作用(参数为null`):open class UserForm(@NotNull                    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") var dateTime: LocalDateTime? = null)并尝试以相同的方式在Controller中将其绑定:@PostMapping("")public String postForm(@Valid UserForm userForm, BindingResult bindingResult) {    System.out.println(userForm + " " + bindingResult);    return "/users/form";}为什么绑定失败以及如何解决?
查看完整描述

2 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

您必须在userForm参数上添加RequestBody批注,以将其绑定到Web请求的主体。Kotlin中的UserForm类还具有一个构造函数,该构造函数的参数无法由JSON反序列化器创建。您可以使用Kotlin数据类重写它。


@RequestMapping("/users")

@Controller

public class UserController {

    @PostMapping("")

    public String postForm(@Valid @RequestBody UserForm userForm, BindingResult bindingResult){

        System.out.println(userForm + " " + bindingResult);

        return "/users/form";

    }

}


查看完整回答
反对 回复 2021-05-26
  • 2 回答
  • 0 关注
  • 158 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信