所以我使用Spring MVC 3注释。
我有一个简单的html表单(实际上是ExtJS),它有三个字段。
1) Username
2) Password
3) Color
好的,username
和password
属于名为User
的数据库。 color
属于另一个名为Color
的bean。
在我的UserController中,我有:
@RequestMapping(value = "/users/login", method = RequestMethod.POST)
@ResponseBody
public String handleLogin( @ModelAttribute("user") User paUser,
@ModelAttribute("color") Color paColor,
ModelMap map) {
// at this point "paUser" contains both username AND password submitted from form
// however, there is nothing in "paColor"
...
return "user.jsp"
}
我做错了什么?
我是春天的新手,顺便说一句。
由于
答案 0 :(得分:5)
通常,您将创建一个表示表单的新类(这称为表单支持对象),例如UserColorForm
,其中包含请求正文中每个输入的属性。
您的控制器方法将如下所示:
@RequestMapping(value = "/users/login", method = RequestMethod.POST)
@ResponseBody
public String handleLogin(UserColorForm form, ModelMap map) {
// now you can work with form.getUsername(), form.getColor() etc.
如果FBO bean具有与表单输入名称匹配的属性名称,则Spring会将请求中的输入直接绑定到属性。即如果表单输入为username=matt&color=blue
,则Spring将创建表单的新实例,并调用setUsername("matt")
和setColor("blue")
。
顺便说一句,如果要从方法(@ResponseBody
)返回视图的名称,您可能不希望使用user.jsp
注释该方法。 @ResponseBody
表示方法的返回值应直接写入响应流。