问题描述
- 初学springmvc 报错 求助
-
JSP页面表单信息: <form action="springmvc/testmodelattribute" method="post"> id:<input type="hidden" name="id" value="1"> <br> username: <input type="text" name="username" value="miwa"> <br> email:<input type="text" name="email" value="abc.miwa"> <br> age:<input type="text" name="age" value="20"> <br> <input type="submit" value="submit">
springmvc handler 相关代码:
@Controller
@RequestMapping("/springmvc")
public class gloomy {@ModelAttribute public void getUser(@RequestParam(value="id ",required = false) Integer id,Map<String , Object> map ){ if(id != null){ User user = new User("miwa", id, "123456", "abc.miwa", 20); System.out.println("获取一个对象"+user); map.put("user", user); } System.out.println("我在这里"); } @RequestMapping("/testmodelattribute") public String testmodelattribute( User user){ System.out.println("修改"+user); return "success"; }
}
POJO代码:public class User { private String username; private Integer id; private String password; private String email; private int age; private Adress adress; public User(String username, Integer id, String password, String email, int age) { super(); this.username = username; this.id = id; this.password = password; this.email = email; this.age = age; } public User(String username, String password, String email, int age) { super(); this.username = username; this.password = password; this.email = email; this.age = age; } public Adress getAdress() { return adress; } public int getAge() { return age; } public String getEmail() { return email; } public Integer getId() { return id; } public String getPassword() { return password; } public String getUsername() { return username; } public void setAdress(Adress adress) { this.adress = adress; } public void setAge(int age) { this.age = age; } public void setEmail(String email) { this.email = email; } public void setId(Integer id) { this.id = id; } public void setPassword(String password) { this.password = password; } public void setUsername(String username) { this.username = username; } @Override public String toString() { return "User [username=" + username + ", id=" + id + ", password=" + password + ", email=" + email + ", age=" + age + "]"; }
异常信息:
严重: Servlet.service() for servlet [springDispatcherServlet] in context with path [/SpringMVC] threw exception [Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.gloomy.springmvc.pojos.User]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.gloomy.springmvc.pojos.User.<init>()] with root cause
java.lang.NoSuchMethodException: com.gloomy.springmvc.pojos.User.()
解决方案
Spring注入属性时通常是根据无参构造函数创建对象,然后调用类的各个属性的getter和setter完成成员变量赋值的。
所以需要User类提供一个无参构造函数。
解决方案二:
SpringMVC报错集中营
解决方案四:
把那两个super()方法删掉试试,没有继承用super()干嘛?
解决方案五:
nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.gloomy.springmvc.pojos.User]: No default constructor found; 从这条报错信息可以看出是没有事先默认的构造方法,即无参构造方法,你在那个User类里写多一个无参的构造方法看行吗?即pubic User(){}
时间: 2024-09-12 22:40:36