IMHO, I think it's helpful to indicate when and why you're instantiating UserProfile, rather than just conditioning by "is null".
void onPrepareForRender() throws Exception { // If fresh start, make sure there's a UserProfile object available. if (form.isValid()) { person = new UserProfile(); } } void onPrepareForSubmit() throws Exception { // Instantiate a UserProfile for the form data to overlay. person = new UserProfile(); } Just my two cents worth. On 15 Oct 2014, at 2:39 am, George Christman <gchrist...@cardaddy.com> wrote: > Yup, that's exactly what was happening. > > On Tue, Oct 14, 2014 at 11:35 AM, Lance Java <lance.j...@googlemail.com> > wrote: > >> This makes sense. For validation errors, tapestry does NOT >> redirect-after-post so the POST request is the same as the render request. >> I can only assume that onPrepare() is called twice in the same request in >> the case of validation errors so your null check stops the POST values from >> being overridden. >> > > > > -- > George Christman > www.CarDaddy.com > P.O. Box 735 > Johnstown, New York