That's good news. Thanks for letting me know. Geoff
On 18/04/2012, at 2:31 AM, David Canteros wrote: > I have done a quick test and it works perfectly! > Thanks Geoff! > > > ------------------------------------------------------------------ > David Germán Canteros > > > 2012/4/12 Geoff Callender <geoff.callender.jumpst...@gmail.com> > >> Hi all, >> >> I've taken on board all the suggestions and observations here about >> AjaxFormLoop problems and fixes, and done a complete rewrite of the >> JumpStart examples. I've put a beta on the demo site. Is every corner case >> handled now? I sure hope so. See if you can find a hole in it. >> >> http://jumpstart.doublenegative.com.au/jumpstart/ >> >> Cheers, >> >> Geoff >> >> >> On 23/03/2012, at 1:57 AM, George Christman wrote: >> >>> Hi David, after some testing I wanted to provide you with some updates >> based >>> on some scenarios I ran into. >>> >>> You'll notice in the !request.isHXR condition, I'm checking for a null >>> lineItem id. This prevents duplicate objects from being added to the >>> collection. >>> >>> @SuppressWarnings("unchecked") >>> public ValueEncoder getEncoderLineItem() { >>> return new ValueEncoder<LineItem>() { >>> public String toClient(LineItem value) { >>> Long id = value.getId(); >>> return id == null ? NEW_OBJ : id.toString(); >>> } >>> >>> public LineItem toValue(String idAsString) { >>> lineItem = null; >>> >>> if (!idAsString.equals(NEW_OBJ)) { >>> Long id = new Long(idAsString); >>> lineItem = (LineItem) session.get(LineItem.class, id); >>> } >>> >>> // AjaxFormLoop can't handle null obj, so if null we >> return >>> a new empty obj. >>> lineItem = lineItem == null ? new LineItem() : lineItem; >>> >>> if (!request.isXHR() && lineItem.getId() == null) { >>> lineItem.setPurchaseRequest(pr); >>> pr.getLineItems().add(lineItem); >>> } >>> return lineItem; >>> } >>> }; >>> } >>> >>> I also found a cleaner way to copy the persisted data to the new session. >>> >>> >>> void onActivate() { >>> System.out.println("onActivate " + this.pr); >>> >>> if (this.pr == null) { >>> this.pr = prPersist != null ? prPersist : new >> PurchaseRequest(); >>> prPersist = null; >>> } >>> >>> } >>> >>> Class<?> onActivate(Long prId) { >>> >>> PurchaseRequest purchaseRequest = prPersist != null ? prPersist : >>> (PurchaseRequest) session.get(PurchaseRequest.class, prId); >>> } >>> >>> If you have any better solutions, please feel free to share. >>> >>> >>> -- >>> View this message in context: >> http://tapestry.1045711.n5.nabble.com/Server-Side-Validation-with-ajax-form-loop-tp5120576p5586509.html >>> Sent from the Tapestry - User mailing list archive at Nabble.com. >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >>> For additional commands, e-mail: users-h...@tapestry.apache.org >>> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> For additional commands, e-mail: users-h...@tapestry.apache.org >> >> --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org