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
>
>

Reply via email to