2011-10-17 72 views
1

我對Spring MVC使用Bean Validation。 Spring將驗證失敗綁定到定義了失敗註釋的bean屬性,以及基於類的約束到bean本身。如何將bean驗證(JSR303)約束分配給bean屬性?

我的問題是,我使用了幾個類的基礎驗證約束,但驗證失敗不應該分配給類,而是分配給其中一個屬性。

例如:

@ScriptAssert(lang = "javascript", script = "_this.passVerify.equals(_this.pass)") 
public class MyBean { 
    @Size(min=6, max=50) 
    private String pass; 

    private String passVerify; 
} 

但是,這是ONLY,請不要告訴我怎麼可以編寫自定義約束/註解的可投入到pass變量

我可能需要的是類似的東西:

@ValidationAlias(
    constraint = @ScriptAssert(lang = "javascript", script = "_this.passVerify.equals(_this.pass)"), 
    field = "pass") 
public class MyBean {... 

所以我的問題是:

  • 是否存在的東西是解決這一問題?
  • 有沒有人有更好的主意(我沒有問題,如果它使用彈簧)?

回答

0
@ValidationAlias(
    constraint = @ScriptAssert(lang = "javascript", script = "_this.passVerify.equals(_this.pass)"), 
    field = "pass") 
public class MyBean {... 

似乎是在結合你最好的選擇與ConstraintValidatorContext的ConstraintValidator#的isValid它允許您自定義錯誤消息和路徑。通過disableDefaultConstraintViolation您可以禁用默認錯誤消息。

+0

我理解你了嗎:這是一個提示如何實現的東西? – Ralph