You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Heath Nielson (JIRA)" <de...@tapestry.apache.org> on 2007/05/21 02:53:16 UTC

[jira] Commented: (TAPESTRY-1482) org.apache.tapestry.BindingException: Unable to read OGNL expression

    [ 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 $BaseComponent_20@b08fff3d[AddClient/$PageError]: Unable to read OGNL expression '<parsed OGNL expression>' of $BaseComponent_20@b08fff3d[AddClient/$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 $BaseComponent_20@b08fff3d[AddClient/$PageError]: Unable to read OGNL expression '<parsed OGNL expression>' of $BaseComponent_20@b08fff3d[AddClient/$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 $BaseComponent_20@b08fff3d[AddClient/$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 $BaseComponent_20@b08fff3d[AddClient/$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: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org