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

how to get form values to controller in spring mvc

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

这是我的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());

}

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

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

让 spring 了解哪个表单控件值应该转到 LoginDTO

的哪个 属性

we can also use the springframework has given us a form tags.so that we can also use that but in that case you have to define your the input path same as the member varibale given in your class.

像这样

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

Then in the controller you can write like this as you have written

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

如果您想在其他 jsp 页面和控制台上获得结果,请执行以下操作:

public String checkLogin(@ModelAttribute("userFormData") LoginDTO formData, BindingResult 
result , Model model){
    System.out.println("=====>  " + formData.getUsername()); //this outputs username on console
    System.out.println("=====>  " + formData.getPassword()); //this outputs password on console
    model.addAttribute("LoginDTO ", LoginDTO );
    return "success"; //this is the return page where the username and password will be rendered as view
}