I implemented my own validator, which implements the interface javax.faces.Validator. For my validation I need an EntityManager to create a query. This is my code:
@FacesValidator(value = "userAliasValidator")
public class UserAliasValidator implements Validator {
@PersistenceUnit
private EntityManagerFactory emf;
private EntityManager em;
@Override
public void validate(FacesContext context, UIComponent component,
Object object) throws ValidatorException {
em = emf.createEntityManager();
Query query = em.createNamedQuery("SelectUserByAlias");
String alias = String.valueOf(object);
query.setParameter("alias", alias);
List<User> result = query.getResultList();
if (result.size() > 0) {
FacesContext.getCurrentInstance()
.addMessage(
null,
new FacesMessage(FacesMessage.SEVERITY_ERROR,
"User allready exists",
"Please try another name!"));
}
}
}
Unfortunately this doesn't work. How can I use a EntityManager in my validator?