2014-03-10 2 views
1

У меня есть следующий класс:ValidateValue() выдает исключение незаконного аргумента, если свойство не имеет правил?

class Foo 
{ 
    @NotEmpty 
    private String member1; 

    @NotEmpty 
    private String member2; 

    private String member3; //this one is optional, so has no rules 
} 

У меня есть библиотека, в которой я добавляю все имена свойств и соответствующих полей пользовательского интерфейса, каждый раз, когда происходит onChange событие пользовательского интерфейса, я называю validateValue() по данному имени поля для этого поле, чтобы проверить его и показать сообщение об ошибке/успехе.

Проблема в том, в этом случае, если у меня нет никаких правил для member3, если я пытаюсь проверить его, делая это:

String value = event.getValue(); //whatever the new value is now 
validator.validateValue(Foo.class, "member3", value); 

На 2-й линии, я получаю следующее исключение:

Caused by: java.lang.IllegalArgumentException: member3 is not a valid property of 
com.xxx.Foo 

Оба member1 и member2 в том же классе, являются правильными.

Есть ли что-нибудь, что я могу сделать, чтобы избежать получения этого исключения в полях, на которых не установлены какие-либо правила? Если нет, есть ли способ (без отражения или указания его вручную для каждого поля), чтобы проверить, нет ли правила, установленного на нем, поэтому я могу избежать вызова validateValue на нем?

ответ

1

В какой версии Hibernate Validator вы используете? Я проверил с последней версией (5.1.0.Final) и там он работает. Если вы можете рекомендовать вам обновление.

Вы также можете создать проблему в Validator issue tracker, сообщив о своей проблеме и, в частности, какую версию Validator вы используете.

Последнее, но не менее важное, чтобы ответить на ваш вопрос об альтернативах. Вы можете использовать API метаданных Bean Validation найти ограничиваемые свойства:

validator.getConstraintsForClass(Foo.class).getConstrainedProperties() 

Это позволит обрабатывать только те свойства, которые acually затрудненных.

+0

Я использую 4.1.x, к сожалению, я не могу обновить :( –

 Смежные вопросы

  • Нет связанных вопросов^_^