如何在spring mvc中获取控制器的表单值

时间:2017-05-31 18:03:53

标签: spring jsp spring-mvc modelattribute

我试图在spring mvc中从jsp到控制器获取表单值,但我无法获取表单数据。

这是我的DTO(bean)

public class LoginDTO implements Serializable {

private Long id;
private String username;
private String password;
// setter and getter methods
}

和我的Jsp

<form class="form-signin" action="test" method="get" modelAttribute="userFormData">
     <input type="text" class="form-control" 
           placeholder="Email" required autofocus>

     <input type="password" class="form-control" 
           placeholder="Password" required>

     <input class="btn btn-md btn-success btn-block" 
           type="submit" value="Signin">
</form>

和我的控制器

@RequestMapping(value = "/test", method = RequestMethod.GET)
public String checkLogin(@ModelAttribute("userFormData") LoginDTO formData, BindingResult 
result) {

    System.out.println("Controller...");

    System.out.println("=====>  " + formData.getUsername());
    System.out.println("=====>  " + formData.getPassword());

}

3 个答案:

答案 0 :(得分:2)

为JSP页面上的控件添加名称。

<input type="text" name="username" ...>
<input type="password" name="password" ...>

让spring知道哪个表单控件值应该转到LoginDTO

的哪个属性

答案 1 :(得分:0)

        

我们也可以使用springframework给我们一个表单tags.so我们也可以使用它,但在这种情况下你必须定义你的输入路径与你的类中给出的成员varibale相同。

像这样

<form:form method="post" modelAttribute="userFormData">
    <form:input path="username" />
    <form:input path="password" />
  

然后在控制器中,您可以像写下一样写出

public String checkLogin(@ModelAttribute("userFormData") LoginDTO formData, BindingResult 
result)

答案 2 :(得分:0)

如果要在其他jsp页面以及控制台上获取结果,请执行以下操作:

java.lang.IllegalArgumentException: Class class hello.Person is not a valid entity class. Please check the entity mapping.