如何最有效地绑定Spring 2.5中的表单数据?

时间:2011-03-27 00:37:32

标签: java spring spring-mvc

将表单数据绑定到模型的最佳方法是什么?我的意思是我有一个简单的模型类:

public class LoginCommand {

    private String login;
    private String password;

    //getters and setters
}

如何在Spring 2.5中将表单数据绑定到此命令的最佳方法是什么? @InitBinder注释可以帮助吗?我无法理解它是如何工作的。我认为它可能起作用的一种方式是吼叫。

@Controller
public LoginController {
    @RequestMapping(value = "/login/*", method = RequestMethod.POST)
    public ModelAndView loginAction(@ModelAttribute("loginCommand") LoginCommand lc, BindingResult result) {

        new LoginCommandValidator().validate(lc, result);
        if (result.hasErrors()){
            // didn't validate
        } else {
            // check against db
        }

    }
}

这是最好的方法吗?

1 个答案:

答案 0 :(得分:1)

好吧,对于登录操作,您可能需要查看Spring安全性。除此之外,我将对更一般的问题给出一些见解,并建议你研究@RequestParam注释......

@RequestMapping(value = "/login/*", method = RequestMethod.POST)
public ModelAndView handleLogin(@RequestParam("login")    String username,
                                @RequestParam("password") String password) {
    // create constructor, remove setters to make this immutable
    LoginCommand lc = new LoginCommand(username, password);
    // more code here...
}

我意识到可能有多种方法可以解决这个问题,但我喜欢这种方法,因为它简单明了;或者更简单地说,虽然略显冗长,但它不那么神奇且容易阅读。