3

我的 html 是在没有使用 spring taglib 的情况下构建的,现在我想将表单的参数绑定到我的控制器中的一个对象。

目前我的表格看起来像这样

<form>
<input type="text" name="frAccUserMgmt.userName"/>
<input type="password" name="frAccUserMgmt.userPwd"/>
</form>

我的对象的相关部分是

Class FrAccUserMgmt {
    private String userName;
    private Strint userPwd;
    // getter and setter
}

我的控制器是

@RequestMapping("login")
Public ModelAndView doLogin(FrAccUserMgmt frAccUserMgmt) {
    //code
}

我该如何去绑定它。目前绑定没有发生。我只是在我的代码中得到一个空对象。

4

2 回答 2

1

您可以尝试BindingResult在方法签名中包含该类,然后查看是否有任何绑定错误:

@RequestMapping("login")
Public ModelAndView doLogin(FrAccUserMgmt frAccUserMgmt, BindingResult result) {
    if (result.hasErrors()) {
        logger.warn("BindingResult errors: " + result.toString());
    }
    //code
}

frAccUserMgmt从表单字段名称中删除部分。Spring会根据命令对象中定义的getter和setter,自动找到命令对象绑定请求参数。

于 2012-07-23T03:40:09.753 回答
0

这也可以通过为应该使用请求参数填充的参数 bean 添加 @ModelAttribute 来完成。

根据春季文档

http://docs.spring.io/spring/docs/3.1.x/spring-framework-reference/html/mvc.html#mvc-ann-modelattrib-method-args(16.3.3.8 在方法参数上使用@ModelAttribute )

方法参数上的 @ModelAttribute 指示应从模型中检索该参数。如果模型中不存在,则应首先实例化参数,然后将其添加到模型中。一旦出现在模型中,参数的字段应该从具有匹配名称的所有请求参数中填充。这在 Spring MVC 中称为数据绑定,这是一种非常有用的机制,可以让您不必单独解析每个表单字段。

于 2014-05-08T17:47:37.937 回答