2016-08-23 105 views
0

我已經用一種形式包裝了兩個想要使用的對象。下面是包裝類:以彈簧形式驗證包裝

public class UserCustomer { 
    User user; 
    Customer customer; 
    //Getters and setters 
    //Constructors 

控制器:

@Controller 
public class RegisterController { 
    @RequestMapping("/register") 
    public String showRegister(Model model){ 
     model.addAttribute("userCustomer", new UserCustomer(new User(), new Customer())); 
     return "register"; 
    } 

    @RequestMapping(value="/doRegister", method = RequestMethod.POST) 
    public String doRegister(Model model, @Valid UserCustomer userCustomer, BindingResult bindingResult){ 
     if(bindingResult.hasErrors()){ 
      return "register"; 
     } 
     System.out.println(userCustomer.getUser()); 
     return "registered"; 
    } 
} 

而且形式:

 <h3 class="new-models">For New Customers</h3> 
     <div class="register"> 
      <sf:form method="post" action="${pageContext.request.contextPath}/doRegister" commandName="userCustomer"> 
       <div class="register-top-grid"> 
        <h3>PERSONAL INFORMATION</h3> 
        <div> 
         <span>First Name<label>*</label></span> 
         <sf:errors path="customer.name" cssClass="alert-danger"/> 
         <sf:input name="name" type="text" path="customer.name"/> 
        </div> 
        <div> 
         <span>Last Name<label>*</label></span> 
         <sf:errors path="customer.surname" cssClass="alert-danger"/> 
         <sf:input name="surname" type="text" path="customer.surname"/> 
        </div> 
        <div> 
         <span>Email Address<label>*</label></span> 
         <sf:errors path="user.email" cssClass="alert-danger"/> 
         <sf:input name="email" type="text" path="user.email"/> 
        </div> 
        <div> 
         <span>Username<label>*</label></span> 
         <sf:errors path="user.username" cssClass="alert-danger"/> 
         <sf:input name="username" type="text" path="user.username"/> 
        </div> 
        <div class="clearfix"> </div> 
        <!--a class="news-letter" href="#"> 
         <label class="sf:checkbox"> 
          <!--sf:input type="checkbox" name="newsletter" path="customer.newsletter" checked=""/><i> </i>Sign Up for Newsletter</label> 
        </a--> 
        <a class="news-letter" href="#"></a> 
       </div> 
       <div class="register-bottom-grid"> 
        <h3>LOGIN INFORMATION</h3> 
        <div> 
         <span>Password<label>*</label></span> 
         <sf:errors path="user.password" cssClass="alert-danger"/> 
         <sf:input name="password" type="password" path="user.password"/> 
        </div> 
        <div> 
         <span>Confirm Password<label>*</label></span> 
         <sf:input type="password" path=""/> 
        </div> 
       </div> 
       <div class="clearfix"> </div> 
       <div class="register-but"> 
        <input type="submit" value="register"> 
        <div class="clearfix"> </div> 
       </div> 
      </sf:form> 
     </div> 

似乎一切都工作正常,除了驗證。我真的不知道如何在這個包裝中進行驗證。

實例驗證的電子郵件用戶等級:

@Pattern(regexp = ".*\\@.*\\..*") 

回答

0

我已經解決了自己這個問題,它的方式更簡單,比我預料的那樣。

驗證的工作原理是簡單地在此包裝中的用戶和客戶字段之上添加@Valid註釋,以便Spring知道實際驗證它們是否「更深」。