【问题标题】:Spring 3 MVC And JSR303 @Valid return null valuesSpring 3 MVC 和 JSR303 @Valid 返回空值
【发布时间】:2013-12-30 09:36:23
【问题描述】:

我是 Spring 新手,我正在尝试创建简单的表单示例,但遇到了问题

当我在控制器中点击提交并接收输入值并使其生效时:

@Valid Student student

我总是有空值...我尝试更改映射,阅读帖子 Spring MVC form input value is always null 但没有任何帮助:(

我的控制器:

@Controller
@RequestMapping({"/rejestracja"})
public class RejestracjaController {

@Autowired
private StudentService studentService;

@RequestMapping(method=RequestMethod.GET)
public String rejestracjaSetup (Model model) {
    model.addAttribute("student",new Student());
    return "rejestracjaPage";
}


@RequestMapping(method=RequestMethod.POST)
public String dodajStuenta (@Valid Student student, BindingResult bindingResult) {
    System.out.println("------");
    System.out.print(student.getFirstname());
    System.out.print("=====");
    System.out.print(student.getLastname());
    System.out.print("=====");
    System.out.print(student.getYearLevel());
    System.out.print("=====");
    if (bindingResult.hasErrors()) {
        return "rejestracjaPage";
    }
    return "redirect:/list";
}
}

我的.jsp:

<form:form method="POST" commandName="student">
<table>
    <tr>
        <td>First name</td>
        <td>
            <form:input path="firstname"/>
            <form:errors path="firstname"/>
        </td>
    </tr>

    <tr>
        <td>Last name</td>
        <td>
            <form:input path="lastname"/>
            <form:errors path="lastname"/>
        </td>
    </tr>

    <tr>
        <td>yearLevel</td>
        <td>
            <form:input path="yearLevel"/>
            <form:errors path="yearLevel"/>
        </td>
    </tr>

    <tr>
        <td>&nbsp;</td>
        <td><input type="submit" value="Register"></td>
    </tr>
</table>
</form:form>

和型号:

@Entity
public class Student {

@Id
@Column
@GeneratedValue(strategy = GenerationType.AUTO)
private int studentId;

@Column
@NotNull
    @Size(min = 6)
private String firstname;

@Column
@Length(min=3, max=50, message="Example message1")
private String lastname;

@Column
@Min(value = 1, message = "Example message2")
private int yearLevel;

public Student() {
}

   ....
    getters and setters
   .... 
}

我做错了什么?

【问题讨论】:

  • 你能用dodajStuenta()控制器方法的输出更新你的问题吗?
  • 它真的看起来像------null=====null=====null=====吗?
  • 是的,这看起来像“------null=====null=====null====="
  • 你在 JSP 中声明了标签库吗?
  • 你的类路径中有 hibernate-validator 吗?

标签: validation spring-mvc


【解决方案1】:

验证不是(还)你的问题。你的问题是空的Student bean。尝试用@ModelAttribute绑定:

@RequestMapping(method=RequestMethod.POST)
public String dodajStuenta (
        @Valid @ModelAttribute("student") Student student,
        BindingResult bindingResult) {

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 2014-11-03
    • 2011-03-05
    • 1970-01-01
    • 2013-05-23
    相关资源
    最近更新 更多