java - 将 ModelAttribute 与布尔对象一起使用时未找到默认构造函数
问题描述
我的 Spring 应用程序有问题,我正在尝试接收一个布尔属性,我使用了 Object Boolean 但我收到了这个错误:
org.springframework.beans.BeanInstantiationException: Failed to instantiate [java.lang.Boolean]: No default constructor found; nested exception is java.lang.NoSuchMethodException: java.lang.Boolean.<init>()
这就是我创建控制器方法的方式:
protected String method(Model model,
@ModelAttribute("attr1") Object1 attr1,
@ModelAttribute("attr2") Object2 attr2,
@RequestParam MultiValueMap<String, String> values,
@ModelAttribute("theattrthatdoesnotwork") Boolean theattrthatdoesnotwork) {
难道我做错了什么?你不能使用布尔值作为模型属性吗?我对 Spring 有点陌生。
提前致谢!
解决方案
尝试使用@RequestParam Boolean theattrthatdoesnotwork
而不是@ModelAttribute
. @ModelAttribute
当您有 5 个字段,然后您不想将所有字段都写为@RequestParam
. 您的错误正在告诉您确切的问题。@ModelAttribute
如果参数没有默认值constructor
(并且Boolean
显然没有) ,则不能使用它来注释参数。如果你想传递你的Boolean
asbody
而不是param
你应该使用@RequestBody
而不是@ModelAttribute
。您会注意到,attr1
它也显示在 中url
。