首页 > 解决方案 > 将 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 有点陌生。

提前致谢!

标签: javaspringspring-mvc

解决方案


尝试使用@RequestParam Boolean theattrthatdoesnotwork而不是@ModelAttribute. @ModelAttribute当您有 5 个字段,然后您不想将所有字段都写为@RequestParam. 您的错误正在告诉您确切的问题。@ModelAttribute如果参数没有默认值constructor(并且Boolean显然没有) ,则不能使用它来注释参数。如果你想传递你的Booleanasbody而不是param你应该使用@RequestBody而不是@ModelAttribute。您会注意到,attr1它也显示在 中url


推荐阅读