我有一个表单对象: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";
}
}
添加回答
举报
0/150
提交
取消