Igor, Here is the page: *public class InscriptionProfessionnelGardeEnfant {* * * * @Property* * @Persist* * @Valid* * private ChildminderAccount childminderAccount;* * * * @Property* * private SelectModel childminderStatusSelectModel;* * * * @Inject* * private SelectModelFactory selectModelFactory;* * * * @Property* * @NotNull* * private String accountPasswordConfirmation;* * * * @Property* * private List<ChildMinderStatus> childMinderStatusList;* * * * @Inject* * private BignibouService service;* * * * @InjectComponent* * private Form childminderRegistrationForm;* * * * @OnEvent(EventConstants.PREPARE)* * void prepare() {* * childminderAccount = new ChildminderAccount();* * childMinderStatusList = service.loadChildminderStatusList();* * childminderStatusSelectModel = selectModelFactory.create(childMinderStatusList,"childMinderStatusDescription"); * * }* * * * @OnEvent(value = EventConstants.VALIDATE, component = "childminderRegistrationForm")* * void validateRegistrationForm() {* * if (childminderRegistrationForm.isValid()) {* * if (accountPasswordConfirmation.equals(childminderAccount.getAccountPassword())) {* * service.persistChildminderAccount(childminderAccount);* * }* * else {* * childminderRegistrationForm.recordError("passwords must match");//todo* * }* * * * } else {* * System.out.println("something went wrong");* * childminderRegistrationForm.recordError("something went wrong");//todo* * }* * }* * * * @DiscardAfter* * @OnEvent(EventConstants.SUCCESS)* * void successfulRegistrationForm() {* * System.out.println("success");* * * * }* * * *}*
...and the template: *<t:sublayout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd ">* * <head>* * <title>Hello World Page</title>* * </head>* * <body>* * <form t:type="form" t:id="childminderRegistrationForm" validate="this" clientValidation="none">* * <div>* * <t:errors/>* * </div>* * <div>* * <label t:type="label" for="accountEmailAddress"/>* * <input t:type="textfield" t:id="accountEmailAddress" value="childminderAccount.accountEmailAddress"/>* * </div>* * <div>* * <label t:type="label" for="accountFirstName"/>* * <input t:type="textfield" t:id="accountFirstName" value="childminderAccount.accountFirstName"/>* * </div>* * <div>* * <label t:type="label" for="accountLastName"/>* * <input t:type="textfield" t:id="accountLastName" value="childminderAccount.accountLastName"/>* * </div>* * <div>* * <label t:type="label" for="accountPassword"/>* * <input t:type="textfield" t:id="accountPassword" value="childminderAccount.accountPassword"/>* * </div>* * <div>* * <label t:type="label" for="accountPasswordConfirmation"/>* * <input t:type="textfield" t:id="accountPasswordConfirmation" value="accountPasswordConfirmation"/>* * </div>* * <div>* * <label t:type="label" for="postcode"/>* * <input t:type="textfield" t:id="postcode" id="postcode" name="postcode" size="40"* * value="childminderAccount.postcodeByPostcodeId" translate="postcodeTranslator"/>* * </div>* * <div>* * <input t:type="select" model="childminderStatusSelectModel" t:id="childminderStatus"* * value="childminderAccount.childMinderStatusByChildMinderStatusId" blankLabel="votre statut"/>* * </div>* * <div><input t:type="submit" type="submit" value="ok"/></div>* * </form>* * </body>* *</t:sublayout>* Can you please let me know how to pass the childminderAccount to the form's validate parameter? Do I do this in the template or the class? Regards, J. 2011/10/21 Igor Drobiazko <igor.drobia...@gmail.com> > Either the object graph is not traversed or your ChildminderAccount object > is null. The @Valid annotation is ignored for null objects. Please post the > entire page class and template. You can also pass childminderAccount to the > Form's validate parameter. > > On Thu, Oct 20, 2011 at 9:53 PM, Julien Martin <bal...@gmail.com> wrote: > > > Hi Igor, > > > > Yes I do use the form component as follows: > > > > From the class: > > * @InjectComponent* > > * private Form childminderRegistrationForm;* > > * > > * > > From template: > > * <form t:type="form" t:id="childminderRegistrationForm" > validate="this" > > clientValidation="none">* > > > > Julien. > > > > 2011/10/20 Igor Drobiazko <igor.drobia...@gmail.com> > > > > > Please more details. "one of my Tapestry classes" is not precise enough > > to > > > identify the problem. You are using the Form component, right? Did you > > use > > > the Form's validate parameter? > > > > > > On Thu, Oct 20, 2011 at 9:30 PM, Julien Martin <bal...@gmail.com> > wrote: > > > > > > > Hello, > > > > > > > > I have the following property in one of my Tapestry classes: > > > > * @Property* > > > > * @Persist* > > > > * @Valid* > > > > * private ChildminderAccount childminderAccount;* > > > > > > > > > > > > The ChildminderAccount entity extends an abstract Account entity > class > > as > > > > follows: > > > > * public class ChildminderAccount extends Account* > > > > > > > > And finally the Account entity class has several properties including > > > this > > > > one: > > > > * @NotNull* > > > > * private String accountFirstname;* > > > > > > > > The problem I have is that Tapestry won't validate the annotated > > > properties > > > > even though I have added the tapestry-beanvalidator jar in the > > classpath. > > > > > > > > Note that I don't use the beanform component for now. > > > > > > > > I use T5.2.6. > > > > > > > > Can anyone please help? > > > > > > > > Regards, > > > > > > > > Julien. > > > > > > > > > > > > > > > > -- > > > Best regards, > > > > > > Igor Drobiazko > > > http://tapestry5.de > > > > > > > > > -- > Best regards, > > Igor Drobiazko > http://tapestry5.de >