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

Reply via email to