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