Может быть, это пограничный разговор, а не вопрос.Я довольно долго бился об это, и я ошеломлен тем, что при поиске через SO и Google я не нашел ни одной релевантной подсказки о причинах, по которым мои проверки не были запущены.
Очевидно, что проверка на основе bean-компонента на основе аннотаций ТРЕБУЕТ, чтобы ваш член var назывался так же, как ваш установщик (с обычным изменением регистра).
Может кто-нибудь объяснить, почему существует это соглашение, и в идеале указать мне куда-нибудьчто упоминает это требование в 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;
}
}
Мой, возможно, наивный инстинкт должен был бы поместить аннотацию на установщик или, возможно, даже позволить мне вводить и / или вызывать проверки в моем установщике и добавлять FacesMessages вFacesContext себя.Почему это плохая идея |почему предпочтительным является JSR-303 (с его строгим соглашением об именах)?