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(以其嚴格的命名約定)更可取?