Yes, that was my initial solution but I ran into problems, but strangely it 
seems to work fine now?!

I just call the onX event I already use for catching the bubbled up events, so 
it seems I can remove my doRefresh and onRefresh code afterall.

Confused but happy :)


  ----- Original Message -----
  From: Geoff Callender
  To: Tapestry users
  Sent: Wednesday, September 10, 2014 1:02 AM
  Subject: Re: component events bubbling down?


  It looks like your server-side has all the info it needs to do a refresh, so 
you can probably keep it as simple as this:

  public void doRefresh() {
  setup();

  if (request.isXHR()) {
  ajaxResponseRenderer.addZone(cartZone);
  }
  }

  In contrast, in the example, the server-side doesn't know the filter value 
but the client-side does, so the server-side asks the client-side to do the 
refresh.

  Geoff


  On 10 Sep 2014, at 8:46 am, John <j...@quivinco.com> wrote:

  > That example was really helpfull, thanks Geoff.
  >
  > My case was somewhat more trivial (just a line of js) and I'm using got5 
jquery. The containing parent injects a reference to the cart-like component 
and handles events from other sibling components by invoking doRefresh, which 
triggers the client side to onRefresh:
  >
  >
  >    public void doRefresh() {
  >        log.debug("doRefresh");
  >        ajaxResponseRenderer.addCallback(new JavaScriptCallback() {
  >            @Override
  >            public void run(JavaScriptSupport javascriptSupport) {
  >                String url = 
componentResources.createEventLink("refresh").toURI();
  >                javascriptSupport.addScript(
  >                        String.format("$('#cartZone').tapestryZone('update', 
{url : '%s'});", url));
  >            }
  >        });
  >    }
  >
  >    public Object onRefresh() {
  >        log.debug("onRefresh");
  >        setup(); // prepare for render
  >        return cartZone.getBody();
  >    }
  >
  >
  > This works like a charm although I feel I'm boilerplating with this code. 
Any suggestions for improvement welcome.
  >
  >  ----- Original Message -----
  >  From: Geoff Callender
  >  To: Tapestry users
  >  Sent: Sunday, September 07, 2014 1:44 AM
  >  Subject: Re: component events bubbling down?
  >
  >
  >  Here's a working example that solves it in the same way that you were 
trying - with bubble up and call down...
  >
  >  
http://jumpstart.doublenegative.com.au/jumpstart7/together/ajaxcomponentscrud/persons
  >
  >  ...where Persons, which is the page, calls list.doChangeOfSelectedPerson() 
in response to several bubbled-up events.
  >
  >  Geoff
  >
  >
  >  On 7 Sep 2014, at 9:31 am, Chris Poulsen <mailingl...@nesluop.dk> wrote:
  >
  >> Hi,
  >>
  >> I believe that https://issues.apache.org/jira/browse/TAP5-2383 is about
  >> this case. There are several possible solutions mentioned in that issue/its
  >> comments.
  >>
  >> --
  >> Chris
  >>
  >>
  >> On Sun, Sep 7, 2014 at 12:16 AM, John <j...@quivinco.com> wrote:
  >>
  >>> I have a situation where a child component (C) fires an event that causes
  >>> the containing component(B) to refesh it's content. Another component (A)
  >>> that contains B also contains compoenent D. D needs also to fire an event
  >>> that causes B to refesh it's content. The event needs to go down the
  >>> component hierarchy.
  >>>
  >>> I've tried to inject component B into A and directky invoke the event
  >>> handler, but it throws exceptions. Is there a proper way to handle this,
  >>> like pushing the event downwards?
  >>>
  >>> John
  >>>
  >>> ---
  >>> This email is free from viruses and malware because avast! Antivirus
  >>> protection is active.
  >>> http://www.avast.com
  >>>
  >
  >
  >
  > ---
  > This email is free from viruses and malware because avast! Antivirus 
protection is active.
  > http://www.avast.com


  ---------------------------------------------------------------------
  To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
  For additional commands, e-mail: users-h...@tapestry.apache.org


---
This email is free from viruses and malware because avast! Antivirus protection 
is active.
http://www.avast.com

Reply via email to