gloomysnow
gloomysnow
采纳率62.5%
2015-10-17 07:17 阅读 1.8k
已采纳

初学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.()

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • 已采纳
    wojiushiwo945you 毕小宝 2015-10-17 11:25

    Spring注入属性时通常是根据无参构造函数创建对象,然后调用类的各个属性的getter和setter完成成员变量赋值的。
    所以需要User类提供一个无参构造函数。

    点赞 评论 复制链接分享
  • gloomysnow gloomysnow 2015-10-17 07:35

    图片说明图片说明图片说明

    点赞 评论 复制链接分享
  • zcl7692387 zcl7692387 2015-10-17 08:55

    把那两个super()方法删掉试试,没有继承用super()干嘛?

    点赞 评论 复制链接分享
  • u012561176 茕夜 2015-10-17 09:48

    nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.gloomy.springmvc.pojos.User]: No default constructor found; 从这条报错信息可以看出是没有事先默认的构造方法,即无参构造方法,你在那个User类里写多一个无参的构造方法看行吗?即pubic User(){}

    点赞 评论 复制链接分享

相关推荐