You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Stephane Decleire <sd...@cariboo-networks.com> on 2008/05/13 15:06:17 UTC
T5 : Is it possible to put a zone inside another zone ?
Hi,
I have a template wich look like this one :
...
<t:grid source="clients" row="client">
<t:parameter name="nameCell">
<t:actionlink t:id="clientLink" context="client.id"
zone="clientZone">${client.name}</t:actionlink>
</t:parameter>
</t:grid>
<t:zone t:id="clientZone"/>
<t:block t:id="clientBlock">
<t:grid source="selectedClient.mailingsList" row="mailing">
<t:parameter name="titleCell">
<t:actionlink t:id="mailingLink" context="mailing.id"
zone="mailingZone">${mailing.title}</t:actionlink>
</t:parameter>
</t:grid>
<t:zone t:id="mailingZone"/>
</t:block>
<t:block t:id="mailingBlock">
<t:beandisplay object="selectedMailing"/>
</t:block>
...
and the associated code :
public class Clients {
@Inject @Service("mailingServices")
private IMailingServices mailingServices;
@Inject
private Block clientBlock;
@Inject
private Block mailingBlock;
@Property
private Client client;
@Property
private Mailing mailing;
@Property @Persist
private Client selectedClient;
@Property @Persist
private Mailing selectedMailing;
@OnEvent(component="clientLink", value="action")
private Block actionFromClientLink(Long id) {
selectedClient = mailingServices.loadClient(id);
return clientBlock;
}
@OnEvent(component="mailingLink", value="action")
private Block actionFromMailingLink(Long id) {
selectedMailing = mailingServices.loadMailing(id);
return mailingBlock;
}
}
and i get the exception :
[ERROR] RequestExceptionHandler Processing of request failed with
uncaught exception: A component event handler method returned the value
org.apache.tapestry.internal.structure.BlockImpl@1087359. Return type
org.apache.tapestry.internal.structure.BlockImpl can not be handled.
Configured return types are java.lang.Class, java.lang.String,
java.net.URL, org.apache.tapestry.Link,
org.apache.tapestry.StreamResponse, org.apache.tapestry.runtime.Component.
org.apache.tapestry.runtime.ComponentEventException: A component event
handler method returned the value
org.apache.tapestry.internal.structure.BlockImpl@1087359. Return type
org.apache.tapestry.internal.structure.BlockImpl can not be handled.
Configured return types are java.lang.Class, java.lang.String,
java.net.URL, org.apache.tapestry.Link,
org.apache.tapestry.StreamResponse,
org.apache.tapestry.runtime.Component. [at
classpath:com/cariboonetworks/mailings/pages/Clients.tml, line 32,
column 79]
at
org.apache.tapestry.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1041)
at
org.apache.tapestry.internal.services.ComponentEventRequestHandlerImpl.handle(ComponentEventRequestHandlerImpl.java:67)
at
org.apache.tapestry.internal.services.ImmediateActionRenderResponseFilter.handle(ImmediateActionRenderResponseFilter.java:42)
at
$ComponentEventRequestHandler_119e2541c7f.handle($ComponentEventRequestHandler_119e2541c7f.java)
at
org.apache.tapestry.internal.services.AjaxFilter.handle(AjaxFilter.java:42)
at
$ComponentEventRequestHandler_119e2541c7f.handle($ComponentEventRequestHandler_119e2541c7f.java)
at
org.apache.tapestry.services.TapestryModule$37.handle(TapestryModule.java:1988)
at
$ComponentEventRequestHandler_119e2541c7f.handle($ComponentEventRequestHandler_119e2541c7f.java)
at
$ComponentEventRequestHandler_119e2541bea.handle($ComponentEventRequestHandler_119e2541bea.java)
at
org.apache.tapestry.internal.services.ComponentEventDispatcher.dispatch(ComponentEventDispatcher.java:135)
at $Dispatcher_119e2541bed.dispatch($Dispatcher_119e2541bed.java)
at $Dispatcher_119e2541bdf.dispatch($Dispatcher_119e2541bdf.java)
at
org.apache.tapestry.services.TapestryModule$12.service(TapestryModule.java:939)
at
org.apache.tapestry.internal.services.LocalizationFilter.service(LocalizationFilter.java:42)
at $RequestHandler_119e2541be0.service($RequestHandler_119e2541be0.java)
at
org.apache.tapestry.services.TapestryModule$2.service(TapestryModule.java:588)
at $RequestHandler_119e2541be0.service($RequestHandler_119e2541be0.java)
at
org.apache.tapestry.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:25)
at $RequestHandler_119e2541be0.service($RequestHandler_119e2541be0.java)
at
org.apache.tapestry.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:79)
at $RequestHandler_119e2541be0.service($RequestHandler_119e2541be0.java)
at
org.apache.tapestry.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:93)
at
org.apache.tapestry.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:84)
at
org.apache.tapestry.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:75)
at
org.apache.tapestry.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:106)
at $RequestHandler_119e2541be0.service($RequestHandler_119e2541be0.java)
at $RequestHandler_119e2541bd8.service($RequestHandler_119e2541bd8.java)
at
org.apache.tapestry.services.TapestryModule$11.service(TapestryModule.java:919)
at
org.apache.tapestry.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
at
$HttpServletRequestFilter_119e2541bd7.service($HttpServletRequestFilter_119e2541bd7.java)
at
$HttpServletRequestHandler_119e2541bd9.service($HttpServletRequestHandler_119e2541bd9.java)
at
$HttpServletRequestHandler_119e2541bd6.service($HttpServletRequestHandler_119e2541bd6.java)
at org.apache.tapestry.TapestryFilter.doFilter(TapestryFilter.java:168)
at
org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821)
at
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at
org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821)
at
org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:471)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
at
org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
at org.mortbay.http.HttpServer.service(HttpServer.java:909)
at org.mortbay.http.HttpConnection.service(HttpConnection.java:820)
at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986)
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837)
at
org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245)
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
If i move my zone 'mailingZone' outside from the clientBlock, everything
works fine ...
Is there a way to implement "dependent" zones (i mean zone inside zone
inside zone ...) ?
Thanks in advance.
Stephane