[
https://issues.apache.org/jira/browse/TAP5-2458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14629950#comment-14629950
]
Chris Poulsen commented on TAP5-2458:
-------------------------------------
I wasn't aware that I did propose a fix, but I've just tried moving the setting
of the request attribute up before the page activation and that seems to
produce the expected result locally (a redirect url is returned in the response
json).
The core tests pass with the change.
A unit test sounds like a good idea, but I have no idea how to write it for
something like this.
It would be nice to have the activate return values being respected for ajax
component requests though, so getting this change in before cutting a 5.4-rc
would be great IMO.
Personally I would just commit the fix, it seems pretty harmless to set the
request attribute a little bit earlier in the process and existing tests does
not fail.
> "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)