Hibernate Validators not fired
nbhatia.bhatian.comcast.net Oct 30, 2008 8:15 PMI am trying to mimick the SeamSpace example to do some hibernate validator validations. Unfortunately the validations are not kicking in and I am able to save invalid data to the database. Any ideas where to look for problems?
Here's an example of a Person entity in my application with validations on firstName and lastName (Note that I had to specify @Column(nullable=false) to make the database column non null - I would have thought that specifying @NotNull would be enough. Does anyone have an explanation for that?):
@Entity public class Person { private String firstName; private String lastName; @NotNull @Length(min = 3, max = 40) @Pattern(regex="[a-zA-Z]+", message="First name must only contain letters") @Column(nullable=false) public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } @NotNull @Length(min = 3, max = 40) @Pattern(regex="[a-zA-Z]+", message="Last name must only contain letters") @Column(nullable=false) public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } }
Here's the front-end code that sets the attributes of the Person object:
<h:form styleClass="register"> <s:validateAll> <div class="formRow"> <h:outputLabel for="firstName"> First Name<em>*</em> </h:outputLabel> <h:inputText id="firstName" value="#{register.newPerson.firstName}" required="true" /> <div class="validationError"><h:message for="firstName" /> </div> </div> ... </s:validateAll> <div class="buttons"><h:commandButton value="Register" action="#{register.register}" styleClass="registerButton" /></div> </h:form>
Here's the code that persists a new Person in my RegisterAction class:
public class RegisterAction { ... private Person newPerson = new Person(); public void register() { ... entityManager.persist(newPerson); ... } }