2012-01-26 18 views
0

也許這是一個咆哮而不是一個問題。我在這一段時間裏頭痛不已,並且驚呆了,我沒有在通過SO和谷歌搜索時發現任何相關的提示,這是爲什麼我的驗證無效。爲什麼JSR-303 bean驗證需要我的成員變量以某種方式命名?

顯然,基於註解的bean驗證需要將你的成員var命名爲與你的setter相同(通常情況下的變體)。

任何人都可以解釋爲什麼這個約定存在,理想情況下指向我在spec/docs中提到這個要求的地方嗎?

@ManagedBean 
@SessionScoped 
public class RantBean implements Serializable{ 

    private static final long serialVersionUID = 1L; 

    /*** 
    * if this member var is not called "name", these validations will never fire 
    * calling them things like "mName", or "_name" will result in no error AND no invocation 
    * of the validations. 
    */ 
    @NotEmpty (message = "cannot be null") 
    @Size (min = 2, max = 1000) 
    private String name; 

    public void setName(String name){ 
     this.name = name; 
    } 
    public String getName(){ 
     return this.name; 
    } 
} 

我或許天真的本能會放在註釋上的setter或者甚至讓我注入和/或我的setter方法中調用驗證,並添加FacesMessages到FacesContext中自己。爲什麼這是一個壞主意|爲什麼JSR-303 impl(以其嚴格的命名約定)更可取?

回答

相關問題