[ 
https://issues.apache.org/jira/browse/TAP5-2458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14629606#comment-14629606
 ] 

Chris Poulsen commented on TAP5-2458:
-------------------------------------

We see this issue as well in our code.

In our case we have a component that periodically triggers an ajax event using 
javascript to indicate that the page is still alive.

The containing page has activation context and the "activate" may chose to 
redirect if activation context is not as expected. In some cases the page is 
able to recover and redirects to itself (returning "this" - this is normally 
used for render cases).

When the ajax request hits the redirect-to-self logic in activate; we get the 
error "Unable to resolve 'null' to a known page name".

I'm not familiar enough with the tapestry internals to determine what the 
correct behavior should be.

The error with the missing page name seems to happen because the scenario 
described above short circuits AjaxComponentEventRequestHandler (line 90) and 
the name attribute is first set after the short circuit return... it could be a 
matter of moving the setting of the attribute up before the "if", but I don't 
know what is supposed to happen in this case... It would be nice if tapestry 
was able to handle the redirect i think, without having given it any deeper 
thought. ;)



> "Unable to resolve 'null' to a known page name"
> -----------------------------------------------
>
>                 Key: TAP5-2458
>                 URL: https://issues.apache.org/jira/browse/TAP5-2458
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core, tapestry-ioc
>    Affects Versions: 5.4, 5.3.8
>            Reporter: Andrej Kriukovskij
>
> "Unable to resolve 'null' to a known page name" exception generated on ajax 
> event (such as asynchronous form submission) when the session is expired
> {code}
> org.apache.tapestry5.ioc.internal.OperationException: Unable to resolve 
> 'null' to a known page name.
>       at 
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:184)
>  
>       at 
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.perform(OperationTrackerImpl.java:118)
>  
>       at 
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.perform(PerThreadOperationTracker.java:84)
>  
>       at 
> org.apache.tapestry5.ioc.internal.RegistryImpl.perform(RegistryImpl.java:1264)
>  
>       at 
> org.apache.tapestry5.internal.services.DeferredResponseRenderer.invokeQueuedRenderer(DeferredResponseRenderer.java:73)
>  
>       at 
> org.apache.tapestry5.internal.services.DeferredResponseRenderer.handleComponentEvent(DeferredResponseRenderer.java:47)
>  
>       at $ComponentRequestHandler_2ff4008f984.handleComponentEvent(Unknown 
> Source) 
>       at 
> org.apache.tapestry5.services.InitializeActivePageName.handleComponentEvent(InitializeActivePageName.java:39)
>  
>       at $ComponentRequestHandler_2ff4008f984.handleComponentEvent(Unknown 
> Source) 
>       at 
> org.apache.tapestry5.internal.services.RequestOperationTracker$1.perform(RequestOperationTracker.java:55)
>  
>       at 
> org.apache.tapestry5.internal.services.RequestOperationTracker$1.perform(RequestOperationTracker.java:52)
>  
>       at 
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.perform(OperationTrackerImpl.java:110)
>  
>       at 
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.perform(PerThreadOperationTracker.java:84)
>  
>       at 
> org.apache.tapestry5.ioc.internal.RegistryImpl.perform(RegistryImpl.java:1264)
>  
>       at 
> org.apache.tapestry5.internal.services.RequestOperationTracker.handleComponentEvent(RequestOperationTracker.java:47)
>  
>       at $ComponentRequestHandler_2ff4008f984.handleComponentEvent(Unknown 
> Source) 
>       at $ComponentRequestHandler_2ff4008f94c.handleComponentEvent(Unknown 
> Source) 
>       at 
> org.apache.tapestry5.internal.services.ComponentEventDispatcher.dispatch(ComponentEventDispatcher.java:48)
>  
>       at $Dispatcher_2ff4008f94f.dispatch(Unknown Source) 
>       at $Dispatcher_2ff4008f946.dispatch(Unknown Source) 
>       at 
> org.apache.tapestry5.modules.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:304)
>  
>       at app.services.AppModule$1.service(AppModule.java:78) 
> ~[AppModule$1.class:na]
>       at $RequestFilter_2ff4008f945.service(Unknown Source) 
>       at $RequestHandler_2ff4008f947.service(Unknown Source) 
>       at 
> org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
>  
>       at $RequestHandler_2ff4008f947.service(Unknown Source) 
>       at 
> org.apache.tapestry5.modules.TapestryModule$3.service(TapestryModule.java:854)
>  
>       at $RequestHandler_2ff4008f947.service(Unknown Source) 
>       at 
> org.apache.tapestry5.modules.TapestryModule$2.service(TapestryModule.java:844)
>  
>       at $RequestHandler_2ff4008f947.service(Unknown Source) 
>       at 
> org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:89)
>  
>       at $RequestHandler_2ff4008f947.service(Unknown Source) 
>       at 
> org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:105)
>  
>       at 
> org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:95)
>  
>       at 
> org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
>  
>       at 
> org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:119)
>  
>       at $RequestHandler_2ff4008f947.service(Unknown Source) 
>       at $RequestHandler_2ff4008f93b.service(Unknown Source) 
>       at 
> org.apache.tapestry5.modules.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:255)
>  
>       at 
> org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:59) 
>       at $HttpServletRequestHandler_2ff4008f93d.service(Unknown Source) 
>       at 
> org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
>  
>       at $HttpServletRequestFilter_2ff4008f938.service(Unknown Source) 
>       at $HttpServletRequestHandler_2ff4008f93d.service(Unknown Source) 
>       at 
> org.apache.tapestry5.modules.TapestryModule$1.service(TapestryModule.java:804)
>  
>       at $HttpServletRequestHandler_2ff4008f93d.service(Unknown Source) 
>       at $HttpServletRequestHandler_2ff4008f937.service(Unknown Source) 
>       at 
> org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:166) 
>       at app.App.doFilter(App.java:56) [App.class:na]
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>  
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>  
>       at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:205)
>  
>       at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>  
>       at 
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
>  
>       at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
>       at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
>       at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>  
>       at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
>       at 
> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
>  
>       at 
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
>  
>       at 
> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
>  
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>  
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>  
>       at java.lang.Thread.run(Thread.java:745) 
> Caused by: org.apache.tapestry5.ioc.util.UnknownValueException: Unable to 
> resolve 'null' to a known page name.
>       at 
> org.apache.tapestry5.internal.services.ComponentClassResolverImpl.canonicalizePageName(ComponentClassResolverImpl.java:685)
>  
>       at $ComponentClassResolver_2ff4008f92b.canonicalizePageName(Unknown 
> Source) 
>       at 
> org.apache.tapestry5.internal.services.RequestPageCacheImpl.get(RequestPageCacheImpl.java:80)
>  
>       at $RequestPageCache_2ff4008f98a.get(Unknown Source) 
>       at $RequestPageCache_2ff4008f985.get(Unknown Source) 
>       at 
> org.apache.tapestry5.internal.services.MarkupWriterFactoryImpl.newPartialMarkupWriter(MarkupWriterFactoryImpl.java:142)
>  
>       at $MarkupWriterFactory_2ff4008fa6f.newPartialMarkupWriter(Unknown 
> Source) 
>       at 
> org.apache.tapestry5.internal.services.AjaxPartialResponseRendererImpl$1.perform(AjaxPartialResponseRendererImpl.java:84)
>  
>       at 
> org.apache.tapestry5.internal.services.AjaxPartialResponseRendererImpl$1.perform(AjaxPartialResponseRendererImpl.java:75)
>  
>       at 
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.perform(OperationTrackerImpl.java:110)
>  
>       ... 62 common frames omitted
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to