OGNL or expression problem - here it is again
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Hi, just upgraded to Tapestry 4.1.3 I have the following problem: I am using an @If component with the following conditional expression: ognl:user==null or (!user.hasPermission(@theClass.THE_PERMISSION)) which should evaluate to true, if there is no user logged in (user==null) or a user without sufficient permissions is logged in. It works, but I get a nasty exception stacktrace in my server.log every time this expression is evaluated (see below). I already had this problem earlier with Tap 4.1.2 but then it was even worse because it actually broke my pages. Any possible solution? Regards Bastian [#|2007-11-15T13:23:24.320+0100|WARNING|sun-appserver9.1|javax.enterprise.system.stream.err|_ThreadID=24;_ThreadName=httpSSLWorkerThread-8080-1;_RequestID=22c86aaa-e31c-4091-a4e5-de65f776e663;| java.lang.NullPointerException: target is null for method hasPermission at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1128) at ognl.ASTMethod.getValueBody(ASTMethod.java:90) at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:202) at ognl.SimpleNode.getValue(SimpleNode.java:246) at ognl.ASTChain.getValueBody(ASTChain.java:137) at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:202) at ognl.SimpleNode.getValue(SimpleNode.java:246) at ognl.ASTNot.getValueBody(ASTNot.java:49) at ognl.BooleanExpression.toGetSourceString(BooleanExpression.java:41) at ognl.ASTNot.toGetSourceString(ASTNot.java:61) at ognl.OgnlRuntime.getChildSource(OgnlRuntime.java:2415) at ognl.OgnlRuntime.getChildSource(OgnlRuntime.java:2374) at ognl.ASTOr.toGetSourceString(ASTOr.java:104) at org.apache.tapestry.services.impl.HiveMindExpressionCompiler.generateGetter(HiveMindExpressionCompiler.java:314) at org.apache.tapestry.services.impl.HiveMindExpressionCompiler.compileExpression(HiveMindExpressionCompiler.java:157) at ognl.OgnlRuntime.compileExpression(OgnlRuntime.java:523) at ognl.Ognl.compileExpression(Ognl.java:141) at org.apache.tapestry.services.impl.ExpressionCacheImpl.parse(ExpressionCacheImpl.java:152) at org.apache.tapestry.services.impl.ExpressionCacheImpl.getCompiledExpression(ExpressionCacheImpl.java:115) at $ExpressionCache_11643435063.getCompiledExpression($ExpressionCache_11643435063.java) at org.apache.tapestry.binding.ExpressionBinding.resolveExpression(ExpressionBinding.java:134) at org.apache.tapestry.binding.ExpressionBinding.getObject(ExpressionBinding.java:125) at org.apache.tapestry.binding.AbstractBinding.getObject(AbstractBinding.java:84) at org.apache.tapestry.enhance.EnhanceUtils.toBoolean(EnhanceUtils.java:173) at $IfBean_3.getCondition($IfBean_3.java) at org.apache.tapestry.components.IfBean.evaluateCondition(IfBean.java:128) at org.apache.tapestry.components.IfBean.renderComponent(IfBean.java:66) at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725) at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:179) at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539) at org.apache.tapestry.components.RenderBody.renderComponent(RenderBody.java:39) at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725) at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:179) at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539) at org.apache.tapestry.html.Body.renderComponent(Body.java:38) at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725) at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:179) at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:539) at org.apache.tapestry.html.Shell.renderComponent(Shell.java:124) at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725) at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:179) at org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107) at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725) at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:179) at org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107) at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:725) at org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:177) at org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:249) at org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:397)
Re: OGNL or expression problem - here it is again
Hi Bastian Two suggestions that might help 1) In ognl you don't necesarily need to ask if something is null using ==null you can use ognl:!user http://www.ognl.org/2.6.9/Documentation/html/LanguageGuide/coercion.html ognl:!user or (!user.hasPermission(@theClass.THE_PERMISSION)) 2) Given that it's a classic !A OR !B, flip it applying De Morgan's ognl:!(user and user.hasPermission(@theClass.THE_PERMISSION))) You can try them just to see if you get the same results. Alejandro. On Nov 15, 2007 1:38 PM, Bastian Voigt [EMAIL PROTECTED] wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Hi, just upgraded to Tapestry 4.1.3 I have the following problem: I am using an @If component with the following conditional expression: ognl:user==null or (!user.hasPermission(@theClass.THE_PERMISSION)) which should evaluate to true, if there is no user logged in (user==null) or a user without sufficient permissions is logged in. It works, but I get a nasty exception stacktrace in my server.log every time this expression is evaluated (see below). I already had this problem earlier with Tap 4.1.2 but then it was even worse because it actually broke my pages. Any possible solution? Regards Bastian - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]