请求绑定不适用于Kotlin类

我有一个表单对象:


public class UserFormJava {

    @NotNull

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")

    private LocalDateTime dateTime;


    public LocalDateTime getDateTime() {

        return dateTime;

    }

    // getter, setter

}

我有一个简单的控制器:


@RequestMapping("/users")

@Controller

public 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";

}

为什么绑定失败以及如何解决?


喵喔喔
浏览 159回答 2
2回答

慕容3067478

您必须在userForm参数上添加RequestBody批注,以将其绑定到Web请求的主体。Kotlin中的UserForm类还具有一个构造函数,该构造函数的参数无法由JSON反序列化器创建。您可以使用Kotlin数据类重写它。@RequestMapping("/users")@Controllerpublic class UserController {    @PostMapping("")    public String postForm(@Valid @RequestBody UserForm userForm, BindingResult bindingResult){        System.out.println(userForm + " " + bindingResult);        return "/users/form";    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java