[
https://issues.apache.org/jira/browse/TAPESTRY-1429?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jesse Kuhnert updated TAPESTRY-1429:
------------------------------------
Fix Version/s: (was: 4.1.3)
4.1.4
> Add getLink() to ICallback
> --------------------------
>
> Key: TAPESTRY-1429
> URL: https://issues.apache.org/jira/browse/TAPESTRY-1429
> Project: Tapestry
> Issue Type: Improvement
> Components: Core Components
> Affects Versions: 4.0.2, 4.1.2, 4.2
> Reporter: Geoff Callender
> Fix For: 4.1.4
>
>
> I'd like to see a getLink() method added to ICallback so we can do
> redirect-after-post with the callback.
> public ILink getLink(IRequestCycle cycle);
> The reason is that I like to keep a "callback stack" as I descend into the
> pages. A page can pop its calling page off the stack and often I'd like to
> redirect to it rather than just activate it.
> Suggested implementation:
> ExternalCallback.java
> ~~~~~~~~~~~~~~~~~
> public ILink getLink(IRequestCycle cycle)
> {
> Defense.notNull(cycle, "cycle");
> try {
> IEngineService service =
> cycle.getInfrastructure().getServiceMap().getService(Tapestry.EXTERNAL_SERVICE);
> ILink link = service.getLink(false, new
> ExternalServiceParameter(_pageName, _parameters));
> return link;
> }
> catch (ClassCastException ex) {
> throw new
> ApplicationRuntimeException(CallbackMessages.pageNotExternal(_pageName), ex);
> }
> }
> DirectCallback.java
> ~~~~~~~~~~~~~~~
> public ILink getLink(IRequestCycle cycle)
> {
> Defense.notNull(cycle, "cycle");
> IPage page = cycle.getPage(_pageName);
> IComponent component = page.getNestedComponent(_componentIdPath);
> IDirect direct = null;
> try
> {
> direct = (IDirect) component;
>
> IEngineService service =
> cycle.getInfrastructure().getServiceMap().getService(Tapestry.DIRECT_SERVICE);
> ILink link = service.getLink(false, new
> DirectServiceParameter(direct, _parameters));
> return link;
> }
> catch (ClassCastException ex)
> {
> throw new
> ApplicationRuntimeException(CallbackMessages.componentNotDirect(component),
> component, null, ex);
> }
> }
> PageCallback.java
> ~~~~~~~~~~~~~~~
> public ILink getLink(IRequestCycle cycle)
> {
> Defense.notNull(cycle, "cycle");
> try {
> IEngineService service =
> cycle.getInfrastructure().getServiceMap().getService(Tapestry.PAGE_SERVICE);
> ILink link = service.getLink(false, _pageName);
> return link;
> }
> catch (ClassCastException ex) {
> throw new
> ApplicationRuntimeException(CallbackMessages.pageNotExternal(_pageName), ex);
> }
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]