Почему при проверке bean-компонента JSR-303 мой член-член должен быть назван определенным образом? - PullRequest
0 голосов
/ 26 января 2012

Может быть, это пограничный разговор, а не вопрос.Я довольно долго бился об это, и я ошеломлен тем, что при поиске через 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 (с его строгим соглашением об именах)?

1 Ответ

0 голосов
/ 26 января 2012

Это не ограничение, накладываемое валидацией бина. Это соглашение , за которым следует (и навязывается) спецификация JavaBean .

Соглашения JavaBean

...