Я пытался узнать JSF 2.0 с проверкой боба на уровне класса, как показано в следующем: -Проверка боб JSR 303, Удлиненная ConstraintValidator не может использовать CDI
Утилита
@Singleton
public class MyUtility {
public boolean isValid(final String input) {
return (input != null) || (!input.trim().equals(""));
}
}
ограничение аннотаций
@Retention(RetentionPolicy.RUNTIME)
@Target({
ElementType.TYPE,
ElementType.ANNOTATION_TYPE,
ElementType.FIELD
})
@Constraint(validatedBy = Validator.class)
@Documented
public @interface Validatable {
String message() default "Validation is failure";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
ограничение валидатор
public class Validator extends ConstraintValidator<Validatable, MyBean> {
//
//----> Try to inject the utility, but it cannot as null.
//
@Inject
private MyUtility myUtil;
public void initialize(ValidatableconstraintAnnotation) {
//nothing
}
public boolean isValid(final MyBean myBean,
final ConstraintValidatorContext constraintContext) {
if (myBean == null) {
return true;
}
//
//----> Null pointer exception here.
//
return this.myUtil.isValid(myBean.getName());
}
}
Данные боб
@Validatable
public class MyBean {
private String name;
//Getter and Setter here
}
для JSF поддержка боб
@Named
@SessionScoped
public class Page1 {
//javax.validation.Validator
@Inject
private Validator validator;
@Inject
private MyBean myBean;
//Submit method
public void submit() {
Set<ConstraintViolation<Object>> violations =
this.validator.validate(this.myBean);
if (violations.size() > 0) {
//Handle error here.
}
}
}
После запуска я столкнулся исключение, как java.lang.NullPointerException
в классе под названием "Validator" на линии return this.myUtil.isValid(myBean.getName());
. Я понимаю, что CDI не вводит мой экземпляр утилиты. Пожалуйста, поправьте меня, если я ошибаюсь.
Я не уверен, что я делаю что-то неправильно или это ограничение проверки боба. Не могли бы вы помочь объяснить далее?
Большое спасибо за ваш совет. –
Я уверен, что Emmanuel и остальная часть EG добавят поддержку CDI для следующего раунда проверки Bean. – LightGuard
Действительно, это [тема] (https://hibernate.onjira.com/browse/bval-238) для BV 1.1. Вы можете узнать больше в документе [ранний проект] (http://beanvalidation.org/1.1/spec/#d0e6698). Поделитесь с нами вашими мыслями. – Gunnar