2011-04-04 143 views
1

在我的注册表格中,我使用Bean Validator(JSR-303)验证User对象,并且需要单独验证密码确认,因为它不是User的成员。我有一个问题,为confirm字段分配错误消息。怎么做 ?Spring MVC:@RequestParam验证

查看:

<form:form modelAttribute="user" method="post" action="register.html"> 
     <div class="fcell"> 
      <div class="clabel"><spring:message code="label.password"/></div> 
      <div class="cdata"><form:password path="password"/></div> 
      <div class="cmsgs"><form:errors path="password" /></div> 
     </div> 
     <div class="fcell"> 
      <div class="clabel"><spring:message code="label.confirm"/></div> 
      <div class="cdata"><input type="password" name="confirm"/></div> 
      <div class="cmsgs"></div> 
     </div> 
</form:form> 

控制器:

@RequestMapping("/register.html") 
public String register(@RequestParam("confirm") String confirm, @ModelAttribute("user") @Valid User user, BindingResult result) { 
    if(!DigestUtils.sha256Hex(confirm).equals(user.getPassword())) { 
      /* Invalid property 'confirm' ... */     
      result.rejectValue("confirm", "text.passwords_not_equal"); 
    } 
    return "register"; 
} 

回答

2

在这种情况下,确认可以被认为是模型对象的一部分,就像这样:

public class RegistrationForm { 
    @Valid 
    private User user; 
    private String confirm; 
    ... 
} 

... 

public String register(@ModelAttribute("user") @Valid RegistrationForm user, 
    BindingResult result) { ... } 

... 

<div class="cdata"> 
    <form:password path="confirm"/></div> 
    <div class="cmsgs"><form:errors path="confirm" /> 
</div> 
... 
+0

非常感谢! :) – marioosh 2011-04-04 09:04:29