2013-05-13 49 views
2

我有一個春天mvc形式與多個模型。 ColorShade如何在彈簧mvc表單中驗證多個模型?

我使用的是hibernate驗證器,當我只有一個模型時驗證工作完美。從我的研究中,我發現使用spring mvc形式創建多個模型的最佳方法是創建一個包裝兩個模型的新模型。所以,我提出:

模式

public class ColorShade { 

    private Color color; 
    private Shade shade; 

    //getter setters 
} 

public class Color { 
    @NotEmpty 
    private String name; 
    //getter setters 
} 

public class Shade { 
    @NotEmpty 
    private String shadeName; 
    //getter setters 
} 

控制器

@RequestMapping(method = RequestMethod.POST) 
public String validateForm(
     @ModelAttribute("COLORSHADE") @Valid ColorShade colorShade, 
     BindingResult result, Map model) { 
    if (result.hasErrors()) { 
     return "myForm"; 
    } 

    return "success"; 
} 

查看

<form:form method="post" commandName="COLORSHADE" cssClass="form-horizontal" > 
    <spring:bind path="COLORSHADE.color.name"> 
     <div class="control-group ${status.error ? 'error' : ''}"> 
      <label class="control-label">Color Name</label> 
      <div class="controls"> 
       <form:input path="${status.expression}"/> 
      </div> 
     </div> 
    </spring:bind> 
    <spring:bind path="COLORSHADE.shade.shadeName"> 
     <div class="control-group ${status.error ? 'error' : ''}"> 
      <label class="control-label">Shade Name</label> 
      <div class="controls"> 
       <form:input path="${status.expression}"/> 
      </div> 
     </div> 
    </spring:bind> 
</form> 

問題

  • 上述設置有效,但驗證現在不起作用。我如何獲得驗證工作?
  • 如果我只有單一的模型,並取消圍繞ColorShade模型包裝,然後驗證工作完全正常。我怎樣才能在單一形式和驗證中同時獲得多個模型以正常工作?

回答