[ 
https://issues.apache.org/jira/browse/TAPESTRY-1482?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12497321
 ] 

Heath Nielson commented on TAPESTRY-1482:
-----------------------------------------

I forgot to add that both the login page and the AddClient page which share the 
same superclass where validationDelegate is defined reference the component 
without passing in a parameter.  They rely instead upon the default value (i.e. 
<span jwcid="@PageError" />).  It appears to me that this issue relates 
directly to the default-value.  The ognl reference to page.validationDelegate 
appears to bind that page's class with the first reference and a 
ClassCastException is thrown when a different page tries to use the same 
default-binding.  When I explicitly set the parameter in the page class, this 
error no longer occurs.

I'm not sure if this is working as designed or not but this error did not occur 
in 4.1.1.

> org.apache.tapestry.BindingException: Unable to read OGNL expression
> --------------------------------------------------------------------
>
>                 Key: TAPESTRY-1482
>                 URL: https://issues.apache.org/jira/browse/TAPESTRY-1482
>             Project: Tapestry
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: 4.1.2
>         Environment: Tapestry 4.1.2 (5/19), ognl (5/19)
>            Reporter: Heath Nielson
>
> I have a PageError component defined as follows:
> .jwc
> <component-specification allow-body="false" allow-informal-parameters="false">
>   <parameter name="delegate" default-value="page.validationDelegate" />
>   <property name="errorRenderer" />
> </component-specification>
> .html
> <html>
> <body jwcid="$content$">
>   <div jwcid="@If" condition="ognl:delegate.hasErrors" class="error">
>     <ul>
>       <li jwcid="@For" source="ognl:delegate.errorRenderers"
>         value="ognl:errorRenderer" style="color:red;" element="li">
>         <span jwcid="@Delegator" delegate="ognl:errorRenderer">Error 
> Message</span>
>       </li>
>     </ul>
>   </div>
> </body>
> </html>
> I include this component in all pages which inherit from FormPage which 
> defines the following bean:
> @Bean(ValidationDelegate.class)
> public abstract IValidationDelegate getValidationDelegate();
> My login page (the first viewable page) the component works as expected and I 
> get the following log:
> DEBUG org.apache.tapestry.BaseComponent  - Begin render Login/$PageError
> DEBUG org.apache.tapestry.services.impl.HiveMindExpressionCompiler  - 
> Compiling expr class ognl.ASTChain and root $BaseComponent_20 with 
> toString:delegate.hasErrors
> DEBUG org.apache.tapestry.services.impl.HiveMindExpressionCompiler  - 
> Compiling expr class ognl.ASTChain and root $BaseComponent_20 with 
> toString:page.validationDelegate
> DEBUG org.apache.tapestry.bean.BeanProvider  - getBean(validationDelegate)
> DEBUG org.apache.tapestry.bean.BeanProvider  - Instantiating instance of 
> org.apache.tapestry.valid.ValidationDelegate
> DEBUG org.apache.tapestry.bean.BeanProvider  - getBean(validationDelegate)
> DEBUG org.apache.tapestry.services.impl.HiveMindExpressionCompiler  - Getter 
> Body: ==================================={ return 
> ((caseTracker.pages.Login)(($BaseComponent_20)$2).getPage()).getValidationDelegate();}
> DEBUG org.apache.tapestry.bean.BeanProvider  - getBean(validationDelegate)
> DEBUG org.apache.tapestry.bean.BeanProvider  - getBean(validationDelegate)
> DEBUG org.apache.tapestry.services.impl.HiveMindExpressionCompiler  - Getter 
> Body: ==================================={ return  ($w) 
> (((org.apache.tapestry.valid.IValidationDelegate)(($BaseComponent_20)$2).getDelegate()).getHasErrors());}
> DEBUG org.apache.tapestry.engine.RequestCycle  - Set attribute 
> org.mb.tapestry.base.IfValue to false
> 19563 [btpool0-2] DEBUG org.apache.tapestry.BaseComponent  - End render 
> Login/$PageError
> However, when I go to the next page which embeds the PageError component, I 
> get the following error:
> DEBUG org.apache.tapestry.BaseComponent  - Begin render AddClient/$PageError
> DEBUG org.apache.tapestry.engine.RequestCycle  - Removing attribute 
> org.apache.tapestry.html.Shell
> DEBUG org.apache.tapestry.engine.AbstractEngine  - Uncaught exception
> org.apache.tapestry.BindingException: Unable to read OGNL expression '<parsed 
> OGNL expression>' of [EMAIL PROTECTED]/$PageError]: Unable to read OGNL 
> expression '<parsed OGNL expression>' of [EMAIL PROTECTED]/$PageError]: 
> $AddClient_24 [context:/WEB-INF/PageError.html, line 3]
>         at 
> org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:134)
>         at 
> org.apache.tapestry.binding.ExpressionBinding.getObject(ExpressionBinding.java:113)
>         at 
> org.apache.tapestry.binding.AbstractBinding.getObject(AbstractBinding.java:84)
>         at 
> org.apache.tapestry.enhance.EnhanceUtils.toBoolean(EnhanceUtils.java:176)
>         at $IfBean_4.getCondition($IfBean_4.java)
>         at 
> org.apache.tapestry.components.IfBean.evaluateCondition(IfBean.java:116)
>         at 
> org.apache.tapestry.components.IfBean.renderComponent(IfBean.java:70)
>         at 
> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:723)
>         at 
> org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
>         at 
> org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)
>         at 
> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:723)
>         at 
> org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
>         at 
> org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:537)
>         at 
> org.apache.tapestry.components.RenderBody.renderComponent(RenderBody.java:39)
>         at 
> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:723)
>         at 
> org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
>         at 
> org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:537)
>         at org.apache.tapestry.html.Body.renderComponent(Body.java:38)
>         at 
> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:723)
>         at 
> org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
>         at 
> org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:537)
>         at org.apache.tapestry.html.Shell.renderComponent(Shell.java:126)
>         at 
> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:723)
>         at 
> org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
>         at 
> org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)
>         at 
> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:723)
>         at 
> org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:184)
>         at 
> org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107)
>         at 
> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:723)
>         at 
> org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:182)
>         at org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:237)
>         at 
> org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:397)
>         at 
> org.apache.tapestry.services.impl.DefaultResponseBuilder.renderResponse(DefaultResponseBuilder.java:158)
>         at 
> org.apache.tapestry.services.impl.ResponseRendererImpl.renderResponse(ResponseRendererImpl.java:33)
>         at 
> $ResponseRenderer_112ab1cb761.renderResponse($ResponseRenderer_112ab1cb761.java)
>         at 
> org.apache.tapestry.engine.AbstractEngine.renderResponse(AbstractEngine.java:208)
>         at 
> org.apache.tapestry.engine.AbstractEngine.handlePageRedirectException(AbstractEngine.java:336)
>         at 
> org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:252)
>         at 
> org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:54)
>         at 
> $WebRequestServicer_112ab1cb7bc.service($WebRequestServicer_112ab1cb7bc.java)
>         at 
> com.javaforge.tapestry.tapernate.filter.TapernateFilter.service(TapernateFilter.java:81)
>         at 
> $WebRequestServicerFilter_112ab1cb7ba.service($WebRequestServicerFilter_112ab1cb7ba.java)
>         at 
> $WebRequestServicer_112ab1cb7be.service($WebRequestServicer_112ab1cb7be.java)
>         at 
> $WebRequestServicer_112ab1cb7b6.service($WebRequestServicer_112ab1cb7b6.java)
>         at 
> org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(WebRequestServicerPipelineBridge.java:61)
>         at 
> $ServletRequestServicer_112ab1cb79c.service($ServletRequestServicer_112ab1cb79c.java)
>         at 
> org.apache.tapestry.request.DecodedRequestInjector.service(DecodedRequestInjector.java:55)
>         at 
> $ServletRequestServicerFilter_112ab1cb798.service($ServletRequestServicerFilter_112ab1cb798.java)
>         at 
> $ServletRequestServicer_112ab1cb79e.service($ServletRequestServicer_112ab1cb79e.java)
>         at 
> org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDecoderFilter.java:52)
>         at 
> $ServletRequestServicerFilter_112ab1cb796.service($ServletRequestServicerFilter_112ab1cb796.java)
>         at 
> $ServletRequestServicer_112ab1cb79e.service($ServletRequestServicer_112ab1cb79e.java)
>         at 
> org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequestEncoding.java:53)
>         at 
> $ServletRequestServicerFilter_112ab1cb79a.service($ServletRequestServicerFilter_112ab1cb79a.java)
>         at 
> $ServletRequestServicer_112ab1cb79e.service($ServletRequestServicer_112ab1cb79e.java)
>         at 
> $ServletRequestServicer_112ab1cb781.service($ServletRequestServicer_112ab1cb781.java)
>         at 
> org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:123)
>         at 
> org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:104)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:747)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:860)
>         at 
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:423)
>         at 
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:355)
>         at 
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226)
>         at 
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:567)
>         at 
> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:147)
>         at 
> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:126)
>         at 
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:119)
>         at org.mortbay.jetty.Server.handle(Server.java:248)
>         at 
> org.mortbay.jetty.HttpConnection.handlerRequest(HttpConnection.java:360)
>         at 
> org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:614)
>         at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:487)
>         at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:197)
>         at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:288)
>         at 
> org.mortbay.jetty.nio.SelectChannelConnector$HttpChannelEndPoint.run(SelectChannelConnector.java:805)
>         at 
> org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
> Caused by: org.apache.hivemind.ApplicationRuntimeException: Unable to read 
> OGNL
> expression '<parsed OGNL expression>' of [EMAIL PROTECTED]/$PageError]: 
> Unable to read OGNL expression '<parsed OGNL expression>' of [EMAIL 
> PROTECTED]/$PageError]: $AddClient_24 [context:/WEB-INF/PageError.jwc, line 
> 8, column 72]
>         at 
> org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.read(ExpressionEvaluatorImpl.java:145)
>         at 
> $ExpressionEvaluator_112ab1cb896.read($ExpressionEvaluator_112ab1cb896.java)
>         at 
> org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:128)
>         ... 74 more
> Caused by: org.apache.tapestry.BindingException: Unable to read OGNL 
> expression'<parsed OGNL expression>' of [EMAIL 
> PROTECTED]/$PageError]:$AddClient_24 [context:/WEB-INF/PageError.jwc, line 8, 
> column 72]
>         at 
> org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:134)
>         at 
> org.apache.tapestry.binding.ExpressionBinding.getObject(ExpressionBinding.java:113)
>         at 
> org.apache.tapestry.binding.AbstractBinding.getObject(AbstractBinding.java:84)
>         at $BaseComponent_20.getDelegate($BaseComponent_20.java)
>         at $ASTChain_112ab1cb8cf.get($ASTChain_112ab1cb8cf.java)
>         at 
> org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.read(ExpressionEvaluatorImpl.java:141)
>         ... 76 more
> Caused by: org.apache.hivemind.ApplicationRuntimeException: Unable to read 
> OGNL
> expression '<parsed OGNL expression>' of [EMAIL PROTECTED]/$PageError]: 
> $AddClient_24 [context:/WEB-INF/clients/AddClient.html, line 13]
>         at 
> org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.read(ExpressionEvaluatorImpl.java:145)
>         at 
> $ExpressionEvaluator_112ab1cb896.read($ExpressionEvaluator_112ab1cb896.java)
>         at 
> org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:128)
>         ... 81 more
> Caused by: java.lang.ClassCastException: $AddClient_24
>         at $ASTChain_112ab1cb8d0.get($ASTChain_112ab1cb8d0.java)
>         at 
> org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.read(ExpressionEvaluatorImpl.java:141)
>         ... 83 more
> The error disappears when I set org.apache.tapestry.disable-caching to true.

-- 
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]

Reply via email to