我正在用Spring框架编写应用程序,并且我有一个问题如何使用额外字段进行窗体验证。带额外字段的弹簧窗体验证
我是新来的这一点,但据我了解与表格填写表格:表单标签我设置属性与
@RequestMapping(value = "/register", method = RequestMethod.GET)
public String register(Model model) {
model.addAttribute("tenant", new Tenant());
return "register";
}
然后创建一个验证器类,并用它在POST请求:
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String registerPost(@ModelAttribute("tenant") Tenant tenant,
Model model,
BindingResult result) {
TenantValidator validator = new TenantValidator();
validator.validate(tenant, result);
if (result.hasErrors()) {
return "register";
}
tenantService.save(tenant);
return "redirect:accountOverview";
}
它工作得很好,我很着迷这是多么方便!
唯一的问题是如何处理额外的字段? 例如我有“重复密码”字段。 如果我创建额外的域,而无需使用标签和使用,并直接验证他们,我将无法使用:
<form:errors path="repeatPassword>
标签为“repeatPassword”不是窗体对象的成员。
想到的第一个解决方案是创建特殊的表单对象TenantDTO,它可以容纳这些额外的字段,并保存只是将数据传输给'Tenant'(实体bean)。
这是一个好方法吗?这种情况下的最佳做法是什么?
谢谢!
Leonty
这是我没有想到的。 我的担心是,我的实体类将具有表单功能(通过具有这些额外的字段)。这是在EJB中,所以使用这个bean的另一个应用程序将会收到一个对象,这个对象的字段根本就没有用(对于那个特定的应用程序)。希望我说的话有道理。总之 - 我想尽可能地分散关注点。 – Leonti 2012-03-04 21:38:15