Markus-

You can inject ComponentResources, pass the zoneId and eventlink to
your javascript method with a JSONObject in your javascript
initializer call , and then call the tapestry zone update via client
side javascript.

Example Java Code:

@Inject
private ComponentResources resources;

@Environmental
private JavaScriptSupport javascriptSupport;

@InjectComponent
private Zone yourZone;

void afterRender()
{
Link url = resources.createEventLink("yourMethodName");
JSONObject spec = new JSONObject();
spec.put("zoneId", yourZone.getClientId());
spec.put("url", url.toString());
javascriptSupport.addInitializerCall(InitializationPriority.NORMAL,
"yourJsFunction", spec);
}

Object onYourMethodName()
{
return yourZone.getBody();
}

Example Javascript Code:

Tapestry.Initializer.yourJsFunction = function(spec)
{
....
var zone = Tapestry.findZoneManagerForZone(spec.zoneId);
zone.updateFromURL(spec.url);
....
};


You can also observe the Tapestry.ZONE_UPDATED_EVENT in your
javascript by doing this if you wanted to perform a zone update first
and then do some javascript:

$(spec.zoneId).observe(Tapestry.ZONE_UPDATED_EVENT, someJsFunction)



On Mon, Sep 20, 2010 at 3:24 PM, Markus Joschko
<markus.josc...@gmail.com> wrote:
> I have a "dialog" on a page which has some eventlinks that are
> triggering serverside actions via ajax requests.
> When some conditions are met, the server will decide to close the
> dialog and update a zone in the page.
> That requires to send the javascript close command and a zone update
> to the browser as response to the event method.
>
> Now I have problems to figure out the best way to do this.
> Although there is the MultiZoneUpdate object I can't use it as the
> RenderCommand that encapsulates the javascript does not work nicely
> with it (leaving the zone name blank gives an error on the
> clientside).
>  I found another approach on the mailinglist that works but it
> involves the PageRenderQueue, which is an internal service.
> Is there a better way to achieve what I want?
>
> Regards,
>  Markus
>
> ---------------------------------------------------------------------
> 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