About Custom Validator
imake Mar 18, 2008 2:56 PMI got java.lang.NullPointerException when i run my program.
org.validator.IdExistValidator.isValid(IdExistValidator.java:20)
at org.hibernate.validator.ClassValidator.getPotentialInvalidValues(ClassValidator.java:478)
at org.jboss.seam.core.Validators$ValidatingResolver.setValue(Validators.java:199)
at org.jboss.el.parser.AstPropertySuffix.setValue(AstPropertySuffix.java:73)
at org.jboss.el.parser.AstValue.setValue(AstValue.java:84)
at org.jboss.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:249)
at com.sun.facelets.el.TagValueExpression.setValue(TagValueExpression.java:93)
at org.jboss.seam.core.Validators.validate(Validators.java:140)
at org.jboss.seam.ui.validator.ModelValidator.validate(ModelValidator.java:35)
at javax.faces.component.UIInput.validateValue(UIInput.java:1013)
at javax.faces.component.UIInput.validate(UIInput.java:867)
at javax.faces.component.UIInput.executeValidate(UIInput.java:1065)
at javax.faces.component.UIInput.processValidators(UIInput.java:666)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)
at javax.faces.component.UIForm.processValidators(UIForm.java:229)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)
at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:662)
at org.ajax4jsf.component.AjaxViewRoot.access$201(AjaxViewRoot.java:57)
at org.ajax4jsf.component.AjaxViewRoot$3.invokeRoot(AjaxViewRoot.java:319)
at org.ajax4jsf.context.JsfOneOneInvoker.invokeOnRegionOrRoot(JsfOneOneInvoker.java:56)
at org.ajax4jsf.context.AjaxContextImpl.invokeOnRegionOrRoot(AjaxContextImpl.java:170)
at org.ajax4jsf.component.AjaxViewRoot.processValidators(AjaxViewRoot.java:333)
at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100)
Student.java
@Entity public class Student implements Serializable { private String school_id; @Id @IdExist @NotNull public String getSchool_id() { return school_id; } public void setSchool_id(String school_id) { this.school_id = school_id; } .......
IdExist.java
@ValidatorClass(IdExistValidator.class) @Target({ElementType.METHOD, ElementType.FIELD}) @Retention(RUNTIME) @Documented public @interface IdExist { String message() default "{validator.idExist}"; }
IdExistValidator.java
public class IdExistValidator implements Validator<IdExist>, Serializable { @In(create=true) EntityManager entityManager; public void initialize(IdExist parameters) { } public boolean isValid(Object value) { List existing = entityManager.createQuery( "select s.school_id from Student s where school_id = :school_id" ).setParameter("school_id", value).getResultList(); if(existing.size() == 0) return true; else return false; } }