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