Hi all, I'm trying to write simple registration form using beaneditor component. If I fullfill all reqired fields in the form and submit it - everything works fine, but if server validation occurs (for example passwords don't match), then all data is lost and Registration page renders with validation errors, but without user data (input values). I think the reason for this behaviour is the initializeNewUser() method, wich rewrites all data if user field is null. But if I delete this method from code, tapestry throws exception - User can't be instantiated (tapestry tries to use constructor with most parameters, which has custom objects, not only String, Integer, etc). So how can resolve this problem? Thanks in advance.
My code (some code is token from Tapestry5 Hotel Booking example): -----------------Registration.java:-------------------------------------------- public class Registration { @Property @Persist(PersistenceConstants.FLASH) private User user; @OnEvent(value = EventConstants.PREPARE, component = "registerForm") private void initializeNewUser() { if (this.user == null) { this.user = new User(); this.user.setCustomer(new Customer()); } else { if (this.user.getCustomer() == null) { this.user.setCustomer(new Customer()); } } } @Property private String verifyPassword; @Inject private UserService userService; @Component private Form registerForm; @Inject private Messages messages; public Object onSubmitFromRegisterForm() { if (!verifyPassword.equals(user.getPassword())) { registerForm.recordError(messages.get("error.verify.password")); return null; } if (userService.getUserByLogin(user.getLogin()) != null) { registerForm.recordError(messages.get("error.user.already.exists")); return null; } userService.save(user); return Index.class; } } --------------Registration.tml------------------------------------ <html t:type="layout" title="Customer registration" t:sidebarTitle="Current Time" t:pageTitle="Register" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter"> <fieldset id="register"> <form class="full-form" t:id="registerForm"> <t:errors/> <fieldset> <legend>Customer registration(company or private person)</legend> <t:beaneditor object="user.customer" exclude="literal:id,users"> <p:businessName> <t:label for="businessName"/> <t:textfield t:id="businessName" value="user.customer.businessName" validate="required"/> </p:businessName> <p:contactPhone> <t:label for="customer_contactPhone"/> <t:textfield t:id="customer_contactPhone" value="user.customer.contactPhone" validate="required"/> </p:contactPhone> <p:contactPerson> <t:label for="contactPerson"/> <t:textfield t:id="contactPerson" value="user.customer.contactPerson" validate="required"/> </p:contactPerson> <p:businessAddress> <t:label for="businessAddress"/> <t:textfield t:id="businessAddress" value="user.customer.businessAddress" validate="required"/> </p:businessAddress> <p:email> <t:label for="customer_email"/> <t:textfield t:id="customer_email" value="user.customer.email" validate="required,email"/> </p:email> </t:beaneditor> </fieldset> <fieldset> <legend>Personal registration</legend> <t:beaneditor object="user" exclude="literal:id,roles" add="verifyPassword"> <p:firstName> <t:label for="firstName"/> <t:textfield t:id="firstName" value="user.firstName" validate="required"/> </p:firstName> <p:middleName> <t:label for="middleName"/> <t:textfield t:id="middleName" value="user.middleName" validate="required"/> </p:middleName> <p:lastName> <t:label for="lastName"/> <t:textfield t:id="lastName" value="user.lastName" validate="required"/> </p:lastName> <p:contactPhone> <t:label for="contactPhone"/> <t:textfield t:id="contactPhone" value="user.contactPhone" validate="required"/> </p:contactPhone> <p:mobilePhone> <t:label for="mobilePhone"/> <t:textfield t:id="mobilePhone" value="user.mobilePhone" validate="required"/> </p:mobilePhone> <p:address> <t:label for="address"/> <t:textfield t:id="address" value="user.address" validate="required"/> </p:address> <p:email> <t:label for="email"/> <t:textfield t:id="email" value="user.email" validate="required"/> </p:email> <p:nickname> <t:label for="nickname"/> <t:textfield t:id="nickname" value="user.nickname" validate="required"/> </p:nickname> <p:login> <t:label for="login"/> <t:textfield t:id="login" value="user.login" validate="required"/> </p:login> <p:password> <t:label for="password"/> <t:passwordfield t:id="password" value="user.password" validate="required"/> </p:password> <p:verifyPassword> <t:label for="verifyPassword"/> <t:passwordfield t:id="verifyPassword" value="verifyPassword" validate="required"/> </p:verifyPassword> </t:beaneditor> </fieldset> <div class="form-submit"> <input type="submit" value="Register"/> </div> <div class="member">Already member? <t:pagelink page="Login">Login now!</t:pagelink> </div> </form> </fieldset> </html>