T4: including javascript in a component
Hello, I'm trying to include some simple javascript in a component in my T4 application. I want my only textfield to get focus when is displayed. I'm following the instructions provided at: http://tapestry.apache.org/tapestry4.1/components/general/script.html The template of the page including the component has @Shell and @Body specified. My component looks like this: html head titleMET Online/title meta http-equiv=Content-Type content=text/html; charset=ISO-8859-1 link href=css/stile_palmare.css rel=stylesheet type=text/css /head body span jwcid=@Script script=/it/archimede/met/metgestioneingressi/tapestry/scripts/FormFocus.script component=ognl:components.barCode/ div id=box_operazione h1Lettura BarCode/h1 br / h2passare il barcode sotto il lettore ottico/h2 form method=post action= jwcid=barCodeForm input type=text jwcid=barCode class=text_box value= / br /br / input type=submit name=Submit value=Submit class=bottone /form /div /body /html The Script template file is the last one provides at: http://tapestry.apache.org/tapestry4.1/components/general/script.html the one without CDATA When I try to display the page I get: [ +/- ] Exception: Unable to read OGNL expression 'parsed OGNL expression' of {component=$textfield_...@81eb97c1[homeloggeduser/barCodeForm.barCode]}: source is null for getProperty(null, name) I have already tried putting a bad component name in the @Script span and the error changes, so it seem the name is right. I have put a bad path to the script file and the error changes , then the path is correct. Can someone point me in the right direction? -- == dott. Ivano Mario Luberti Archimede Informatica societa' cooperativa a r. l. Sede Operativa Via Gereschi 36 - 56126- Pisa tel.: +39-050- 580959 tel/fax: +39-050-9711344 web: www.archicoop.it == - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: T4: including javascript in a component
Hi, The error message says that something.getName() is trying to get evaluated but something is null Finding where exactly the error is thrown will show you which object is null... On Wed, Dec 30, 2009 at 20:51, Ivano Luberti lube...@archicoop.it wrote: Hello, I'm trying to include some simple javascript in a component in my T4 application. I want my only textfield to get focus when is displayed. I'm following the instructions provided at: http://tapestry.apache.org/tapestry4.1/components/general/script.html The template of the page including the component has @Shell and @Body specified. My component looks like this: html head titleMET Online/title meta http-equiv=Content-Type content=text/html; charset=ISO-8859-1 link href=css/stile_palmare.css rel=stylesheet type=text/css /head body span jwcid=@Script script=/it/archimede/met/metgestioneingressi/tapestry/scripts/FormFocus.script component=ognl:components.barCode/ div id=box_operazione h1Lettura BarCode/h1 br / h2passare il barcode sotto il lettore ottico/h2 form method=post action= jwcid=barCodeForm input type=text jwcid=barCode class=text_box value= / br /br / input type=submit name=Submit value=Submit class=bottone /form /div /body /html The Script template file is the last one provides at: http://tapestry.apache.org/tapestry4.1/components/general/script.html the one without CDATA When I try to display the page I get: [ +/- ] Exception: Unable to read OGNL expression 'parsed OGNL expression' of {component=$textfield_...@81eb97c1[homeloggeduser/barCodeForm.barCode]}: source is null for getProperty(null, name) I have already tried putting a bad component name in the @Script span and the error changes, so it seem the name is right. I have put a bad path to the script file and the error changes , then the path is correct. Can someone point me in the right direction? -- == dott. Ivano Mario Luberti Archimede Informatica societa' cooperativa a r. l. Sede Operativa Via Gereschi 36 - 56126- Pisa tel.: +39-050- 580959 tel/fax: +39-050-9711344 web: www.archicoop.it == - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org -- Andreas Andreou - andy...@apache.org - http://blog.andyhot.gr Tapestry / Tacos developer Open Source / JEE Consulting - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: T4: including javascript in a component
Thanks Andreas , the problem is that everything works until I insert the javascript. In fact the exception is thrown inside the Script implementation. Down here you'll find the init part of the srtack trace. I was wondering if not using the @Body in the component html template is correct, given the fact that it is used in the html template of the page that call the component. * ognl.OgnlRuntime.getProperty(OgnlRuntime.java:2203) * ognl.ASTProperty.getValueBody(ASTProperty.java:114) * ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212) * ognl.SimpleNode.getValue(SimpleNode.java:258) * ognl.ASTChain.getValueBody(ASTChain.java:141) * ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212) * ognl.SimpleNode.getValue(SimpleNode.java:258) * ognl.Ognl.getValue(Ognl.java:494) * ognl.Ognl.getValue(Ognl.java:458) * org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.readCompiled(ExpressionEvaluatorImpl.java:123) * org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.read(ExpressionEvaluatorImpl.java:112) * $ExpressionEvaluator_125e178e557.read($ExpressionEvaluator_125e178e557.java) * org.apache.tapestry.script.ScriptSessionImpl.evaluate(ScriptSessionImpl.java:86) * org.apache.tapestry.script.AbstractToken.evaluate(AbstractToken.java:84) * org.apache.tapestry.script.InsertToken.write(InsertToken.java:48) * org.apache.tapestry.script.AbstractToken.writeChildren(AbstractToken.java:71) * org.apache.tapestry.script.LetToken.write(LetToken.java:53) * org.apache.tapestry.script.AbstractToken.writeChildren(AbstractToken.java:71) * org.apache.tapestry.script.ParsedScript.execute(ParsedScript.java:82) * org.apache.tapestry.html.Script.renderComponent(Script.java:159) * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:724) * org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:187) * org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107) * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:724) * org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:187) * org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:538) * org.apache.tapestry.html.Body.renderComponent(Body.java:38) Andreas Andreou ha scritto: Hi, The error message says that something.getName() is trying to get evaluated but something is null Finding where exactly the error is thrown will show you which object is null... On Wed, Dec 30, 2009 at 20:51, Ivano Luberti lube...@archicoop.it wrote: Hello, I'm trying to include some simple javascript in a component in my T4 application. I want my only textfield to get focus when is displayed. I'm following the instructions provided at: http://tapestry.apache.org/tapestry4.1/components/general/script.html The template of the page including the component has @Shell and @Body specified. My component looks like this: html head titleMET Online/title meta http-equiv=Content-Type content=text/html; charset=ISO-8859-1 link href=css/stile_palmare.css rel=stylesheet type=text/css /head body span jwcid=@Script script=/it/archimede/met/metgestioneingressi/tapestry/scripts/FormFocus.script component=ognl:components.barCode/ div id=box_operazione h1Lettura BarCode/h1 br / h2passare il barcode sotto il lettore ottico/h2 form method=post action= jwcid=barCodeForm input type=text jwcid=barCode class=text_box value= / br /br / input type=submit name=Submit value=Submit class=bottone /form /div /body /html The Script template file is the last one provides at: http://tapestry.apache.org/tapestry4.1/components/general/script.html the one without CDATA When I try to display the page I get: [ +/- ] Exception: Unable to read OGNL expression 'parsed OGNL expression' of {component=$textfield_...@81eb97c1[homeloggeduser/barCodeForm.barCode]}: source is null for getProperty(null, name) I have already tried putting a bad component name in the @Script span and the error changes, so it seem the name is right. I have put a bad path to the script file and the error changes , then the path is correct. Can someone point me in the right direction? -- == dott. Ivano Mario Luberti Archimede Informatica societa' cooperativa a r. l. Sede Operativa Via Gereschi 36 - 56126- Pisa tel.: +39-050- 580959 tel/fax: +39-050-9711344 web: www.archicoop.it == - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org -- == dott. Ivano Mario
Re: T4: including javascript in a component
You don't specify which object you've found to be null... but anyway, let me try... looking at the FormFocus.script code from http://tapestry.apache.org/tapestry4.1/components/general/script.html i see ${component.form.name} and ${component.name}, so either component or component.form is null (according to the error message) Looking at the javadocs for AbstractFormComponent http://tapestry.apache.org/tapestry4.1/apidocs/org/apache/tapestry/form/AbstractFormComponent.html I read getForm() : returns the IForm which contains the component, or null if the component is not contained by a form, or if the containing Form is not currently rendering. Finally, looking at your code I see that @Script is outside the @Form, so according to the javadocs, getForm() should indeed return null ! The cure? move the @Script inside @Form - or rewrite the script so that it doesn't use getForm() perhaps... On Wed, Dec 30, 2009 at 23:35, Ivano Luberti lube...@archicoop.it wrote: Thanks Andreas , the problem is that everything works until I insert the javascript. In fact the exception is thrown inside the Script implementation. Down here you'll find the init part of the srtack trace. I was wondering if not using the @Body in the component html template is correct, given the fact that it is used in the html template of the page that call the component. * ognl.OgnlRuntime.getProperty(OgnlRuntime.java:2203) * ognl.ASTProperty.getValueBody(ASTProperty.java:114) * ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212) * ognl.SimpleNode.getValue(SimpleNode.java:258) * ognl.ASTChain.getValueBody(ASTChain.java:141) * ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212) * ognl.SimpleNode.getValue(SimpleNode.java:258) * ognl.Ognl.getValue(Ognl.java:494) * ognl.Ognl.getValue(Ognl.java:458) * org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.readCompiled(ExpressionEvaluatorImpl.java:123) * org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.read(ExpressionEvaluatorImpl.java:112) * $ExpressionEvaluator_125e178e557.read($ExpressionEvaluator_125e178e557.java) * org.apache.tapestry.script.ScriptSessionImpl.evaluate(ScriptSessionImpl.java:86) * org.apache.tapestry.script.AbstractToken.evaluate(AbstractToken.java:84) * org.apache.tapestry.script.InsertToken.write(InsertToken.java:48) * org.apache.tapestry.script.AbstractToken.writeChildren(AbstractToken.java:71) * org.apache.tapestry.script.LetToken.write(LetToken.java:53) * org.apache.tapestry.script.AbstractToken.writeChildren(AbstractToken.java:71) * org.apache.tapestry.script.ParsedScript.execute(ParsedScript.java:82) * org.apache.tapestry.html.Script.renderComponent(Script.java:159) * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:724) * org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:187) * org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107) * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:724) * org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:187) * org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:538) * org.apache.tapestry.html.Body.renderComponent(Body.java:38) Andreas Andreou ha scritto: Hi, The error message says that something.getName() is trying to get evaluated but something is null Finding where exactly the error is thrown will show you which object is null... On Wed, Dec 30, 2009 at 20:51, Ivano Luberti lube...@archicoop.it wrote: Hello, I'm trying to include some simple javascript in a component in my T4 application. I want my only textfield to get focus when is displayed. I'm following the instructions provided at: http://tapestry.apache.org/tapestry4.1/components/general/script.html The template of the page including the component has @Shell and @Body specified. My component looks like this: html head titleMET Online/title meta http-equiv=Content-Type content=text/html; charset=ISO-8859-1 link href=css/stile_palmare.css rel=stylesheet type=text/css /head body span jwcid=@Script script=/it/archimede/met/metgestioneingressi/tapestry/scripts/FormFocus.script component=ognl:components.barCode/ div id=box_operazione h1Lettura BarCode/h1 br / h2passare il barcode sotto il lettore ottico/h2 form method=post action= jwcid=barCodeForm input type=text jwcid=barCode class=text_box value= / br /br / input type=submit name=Submit value=Submit class=bottone /form /div /body /html The Script template file is the last one provides at: http://tapestry.apache.org/tapestry4.1/components/general/script.html the one without CDATA When I try to display the page I get: [ +/- ] Exception: Unable to read OGNL expression 'parsed OGNL
T4: including javascript in a component (solved)
Actually the error was in the html template of the component: The @Script refers to the text field component barCode but it is written before the the component itself. Hence when the file is parsed the the text field component doesn't exist yet. I have put the Scrtp declaration after the /form tag and it works. html head titleMET Online/title meta http-equiv=Content-Type content=text/html; charset=ISO-8859-1 link href=css/stile_palmare.css rel=stylesheet type=text/css /head body span jwcid=@Script script=/it/archimede/met/metgestioneingressi/tapestry/scripts/FormFocus.script component=ognl:components.barCode/ div id=box_operazione h1Lettura BarCode/h1 br / h2passare il barcode sotto il lettore ottico/h2 form method=post action= jwcid=barCodeForm input type=text jwcid=barCode class=text_box value= / br /br / input type=submit name=Submit value=Submit class=bottone /form /div /body /html -- == dott. Ivano Mario Luberti Archimede Informatica societa' cooperativa a r. l. Sede Operativa Via Gereschi 36 - 56126- Pisa tel.: +39-050- 580959 tel/fax: +39-050-9711344 web: www.archicoop.it == - To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org
Re: T4: including javascript in a component
I have wrote the solution I have found before reading this. Actually It was enough to put it after the form. The null component was the text field component not the Form. You almost got it because sure the position of @Script matters. It seems that getForm returns something even if the form has already been rendered. Andreas Andreou ha scritto: You don't specify which object you've found to be null... but anyway, let me try... looking at the FormFocus.script code from http://tapestry.apache.org/tapestry4.1/components/general/script.html i see ${component.form.name} and ${component.name}, so either component or component.form is null (according to the error message) Looking at the javadocs for AbstractFormComponent http://tapestry.apache.org/tapestry4.1/apidocs/org/apache/tapestry/form/AbstractFormComponent.html I read getForm() : returns the IForm which contains the component, or null if the component is not contained by a form, or if the containing Form is not currently rendering. Finally, looking at your code I see that @Script is outside the @Form, so according to the javadocs, getForm() should indeed return null ! The cure? move the @Script inside @Form - or rewrite the script so that it doesn't use getForm() perhaps... On Wed, Dec 30, 2009 at 23:35, Ivano Luberti lube...@archicoop.it wrote: Thanks Andreas , the problem is that everything works until I insert the javascript. In fact the exception is thrown inside the Script implementation. Down here you'll find the init part of the srtack trace. I was wondering if not using the @Body in the component html template is correct, given the fact that it is used in the html template of the page that call the component. * ognl.OgnlRuntime.getProperty(OgnlRuntime.java:2203) * ognl.ASTProperty.getValueBody(ASTProperty.java:114) * ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212) * ognl.SimpleNode.getValue(SimpleNode.java:258) * ognl.ASTChain.getValueBody(ASTChain.java:141) * ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212) * ognl.SimpleNode.getValue(SimpleNode.java:258) * ognl.Ognl.getValue(Ognl.java:494) * ognl.Ognl.getValue(Ognl.java:458) * org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.readCompiled(ExpressionEvaluatorImpl.java:123) * org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.read(ExpressionEvaluatorImpl.java:112) * $ExpressionEvaluator_125e178e557.read($ExpressionEvaluator_125e178e557.java) * org.apache.tapestry.script.ScriptSessionImpl.evaluate(ScriptSessionImpl.java:86) * org.apache.tapestry.script.AbstractToken.evaluate(AbstractToken.java:84) * org.apache.tapestry.script.InsertToken.write(InsertToken.java:48) * org.apache.tapestry.script.AbstractToken.writeChildren(AbstractToken.java:71) * org.apache.tapestry.script.LetToken.write(LetToken.java:53) * org.apache.tapestry.script.AbstractToken.writeChildren(AbstractToken.java:71) * org.apache.tapestry.script.ParsedScript.execute(ParsedScript.java:82) * org.apache.tapestry.html.Script.renderComponent(Script.java:159) * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:724) * org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:187) * org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107) * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:724) * org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:187) * org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:538) * org.apache.tapestry.html.Body.renderComponent(Body.java:38) Andreas Andreou ha scritto: Hi, The error message says that something.getName() is trying to get evaluated but something is null Finding where exactly the error is thrown will show you which object is null... On Wed, Dec 30, 2009 at 20:51, Ivano Luberti lube...@archicoop.it wrote: Hello, I'm trying to include some simple javascript in a component in my T4 application. I want my only textfield to get focus when is displayed. I'm following the instructions provided at: http://tapestry.apache.org/tapestry4.1/components/general/script.html The template of the page including the component has @Shell and @Body specified. My component looks like this: html head titleMET Online/title meta http-equiv=Content-Type content=text/html; charset=ISO-8859-1 link href=css/stile_palmare.css rel=stylesheet type=text/css /head body span jwcid=@Script script=/it/archimede/met/metgestioneingressi/tapestry/scripts/FormFocus.script component=ognl:components.barCode/ div id=box_operazione h1Lettura BarCode/h1 br / h2passare il barcode sotto il lettore ottico/h2 form method=post action= jwcid=barCodeForm input type=text jwcid=barCode class=text_box value=
Re: T4: including javascript in a component
Correction: putting the @Script solved the null pointer but the generated javascript was incorrect. I had to put it before the end of the Form. You were right Andreas Ivano Luberti ha scritto: I have wrote the solution I have found before reading this. Actually It was enough to put it after the form. The null component was the text field component not the Form. You almost got it because sure the position of @Script matters. It seems that getForm returns something even if the form has already been rendered. Andreas Andreou ha scritto: You don't specify which object you've found to be null... but anyway, let me try... looking at the FormFocus.script code from http://tapestry.apache.org/tapestry4.1/components/general/script.html i see ${component.form.name} and ${component.name}, so either component or component.form is null (according to the error message) Looking at the javadocs for AbstractFormComponent http://tapestry.apache.org/tapestry4.1/apidocs/org/apache/tapestry/form/AbstractFormComponent.html I read getForm() : returns the IForm which contains the component, or null if the component is not contained by a form, or if the containing Form is not currently rendering. Finally, looking at your code I see that @Script is outside the @Form, so according to the javadocs, getForm() should indeed return null ! The cure? move the @Script inside @Form - or rewrite the script so that it doesn't use getForm() perhaps... On Wed, Dec 30, 2009 at 23:35, Ivano Luberti lube...@archicoop.it wrote: Thanks Andreas , the problem is that everything works until I insert the javascript. In fact the exception is thrown inside the Script implementation. Down here you'll find the init part of the srtack trace. I was wondering if not using the @Body in the component html template is correct, given the fact that it is used in the html template of the page that call the component. * ognl.OgnlRuntime.getProperty(OgnlRuntime.java:2203) * ognl.ASTProperty.getValueBody(ASTProperty.java:114) * ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212) * ognl.SimpleNode.getValue(SimpleNode.java:258) * ognl.ASTChain.getValueBody(ASTChain.java:141) * ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212) * ognl.SimpleNode.getValue(SimpleNode.java:258) * ognl.Ognl.getValue(Ognl.java:494) * ognl.Ognl.getValue(Ognl.java:458) * org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.readCompiled(ExpressionEvaluatorImpl.java:123) * org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.read(ExpressionEvaluatorImpl.java:112) * $ExpressionEvaluator_125e178e557.read($ExpressionEvaluator_125e178e557.java) * org.apache.tapestry.script.ScriptSessionImpl.evaluate(ScriptSessionImpl.java:86) * org.apache.tapestry.script.AbstractToken.evaluate(AbstractToken.java:84) * org.apache.tapestry.script.InsertToken.write(InsertToken.java:48) * org.apache.tapestry.script.AbstractToken.writeChildren(AbstractToken.java:71) * org.apache.tapestry.script.LetToken.write(LetToken.java:53) * org.apache.tapestry.script.AbstractToken.writeChildren(AbstractToken.java:71) * org.apache.tapestry.script.ParsedScript.execute(ParsedScript.java:82) * org.apache.tapestry.html.Script.renderComponent(Script.java:159) * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:724) * org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:187) * org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:107) * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:724) * org.apache.tapestry.services.impl.DefaultResponseBuilder.render(DefaultResponseBuilder.java:187) * org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:538) * org.apache.tapestry.html.Body.renderComponent(Body.java:38) Andreas Andreou ha scritto: Hi, The error message says that something.getName() is trying to get evaluated but something is null Finding where exactly the error is thrown will show you which object is null... On Wed, Dec 30, 2009 at 20:51, Ivano Luberti lube...@archicoop.it wrote: Hello, I'm trying to include some simple javascript in a component in my T4 application. I want my only textfield to get focus when is displayed. I'm following the instructions provided at: http://tapestry.apache.org/tapestry4.1/components/general/script.html The template of the page including the component has @Shell and @Body specified. My component looks like this: html head titleMET Online/title meta http-equiv=Content-Type content=text/html; charset=ISO-8859-1 link href=css/stile_palmare.css rel=stylesheet type=text/css /head body span jwcid=@Script script=/it/archimede/met/metgestioneingressi/tapestry/scripts/FormFocus.script