[ 
http://issues.apache.org/jira/browse/TAPESTRY-672?page=comments#action_12372753 
] 

Leonardo Quijano Vincenzi commented on TAPESTRY-672:
----------------------------------------------------

Since TAPESTRY-517 was fixed, this bug can be closed.


> Using a FieldLabel component after a checkbox modifies the checkbox's value
> ---------------------------------------------------------------------------
>
>          Key: TAPESTRY-672
>          URL: http://issues.apache.org/jira/browse/TAPESTRY-672
>      Project: Tapestry
>         Type: Bug
>   Components: Framework
>     Versions: 4.0
>  Environment: Tapestry 4.0-beta-8, jdk 5.0
>     Reporter: Leonardo Quijano Vincenzi

>
> I don't know if this is related to TAPESTRY-517, but here it goes. 
> Having a FieldLabel after a checkbox in a form is causing two "setValue()" 
> calls during form rewind.
> For example, I have the following property in a page:
>     private boolean inspectorEnabled;
>     public boolean isInspectorEnabled() {
>         return this.inspectorEnabled;
>     }
>     public void setInspectorEnabled(boolean inspectorEnabled) {
>         Thread.dumpStack();
>         this.inspectorEnabled = inspectorEnabled;
>     }
> (added a dumpStack() for debugging).
> In the HTML, i put a checkbox, and after that, a FieldLabel:
>         <input jwcid="[EMAIL PROTECTED]" value="ognl:inspectorEnabled" />
>         &nbsp;
>         <label jwcid="@FieldLabel" field="component:inspectorEnabled" 
>                   displayName="Enable Tapestry Inspector" />
> When i go to the page, check the box and submit my form, its value continues 
> as false. After some debugging, I tried removing the FieldLabel from the HTML:
>         <input jwcid="[EMAIL PROTECTED]" value="ognl:inspectorEnabled" />
>        &nbsp;
>          <label>Enable Tapestry Inspector</label>
> Now, the checkbox works again.
> I tried printing some stack traces for each case. In the successful one, 
> setInspectorEnabled() is called only once during form rewind, as it should:
> java.lang.Exception: Stack trace
>       at java.lang.Thread.dumpStack(Thread.java:1158)
>       at 
> com.dtqsoftware.sigep.web.pages.sistema.Parametros.setInspectorEnabled(Parametros.java:72)
>       at 
> com.dtqsoftware.sigep.web.pages.sistema.Parametros.pageBeginRender(Parametros.java:107)
>       at 
> org.apache.tapestry.AbstractPage.firePageBeginRender(AbstractPage.java:478)
>       at org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:268)
>       at 
> org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:368)
>       at 
> org.apache.tapestry.services.impl.ResponseRendererImpl.renderResponse(ResponseRendererImpl.java:71)
>       at 
> $ResponseRenderer_1069b6ddb8a.renderResponse($ResponseRenderer_1069b6ddb8a.java)
>       at org.apache.tapestry.engine.PageService.service(PageService.java:69)
>       at $IEngineService_1069b6ddbf5.service($IEngineService_1069b6ddbf5.java)
>       at 
> org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(EngineServiceOuterProxy.java:65)
>       at 
> org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:248)
>       at 
> org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:60)
>       at 
> $WebRequestServicer_1069b6ddbce.service($WebRequestServicer_1069b6ddbce.java)
>       at 
> org.apache.tapestry.services.impl.DisableCachingFilter.service(DisableCachingFilter.java:48)
>       at 
> $WebRequestServicerFilter_1069b6ddbd0.service($WebRequestServicerFilter_1069b6ddbd0.java)
>       at 
> $WebRequestServicer_1069b6ddbd2.service($WebRequestServicer_1069b6ddbd2.java)
>       at 
> $WebRequestServicer_1069b6ddbca.service($WebRequestServicer_1069b6ddbca.java)
> ....
> In the broken case, this setInspectorEnabled() method is called twice in form 
> rewind. One for the checkbox, one for the fieldLabel:
> First, the checkbox calls setInspectorEnabled(true):
> Stack trace
>       at java.lang.Thread.dumpStack(Thread.java:1158)
>       at 
> com.dtqsoftware.sigep.web.pages.sistema.Parametros.setInspectorEnabled(Parametros.java:72)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:585)
>       at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:491)
>       at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:785)
>       at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:937)
>       at 
> ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:76)
>       at 
> ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:132)
>       at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:1629)
>       at ognl.ASTProperty.setValueBody(ASTProperty.java:105)
>       at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:177)
>       at ognl.SimpleNode.setValue(SimpleNode.java:246)
>       at ognl.Ognl.setValue(Ognl.java:476)
>       at 
> org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.writeCompiled(ExpressionEvaluatorImpl.java:121)
>       at 
> $ExpressionEvaluator_1069b6ddc7a.writeCompiled($ExpressionEvaluator_1069b6ddc7a.java)
>       at 
> org.apache.tapestry.binding.ExpressionBinding.setObject(ExpressionBinding.java:172)
>       at $Checkbox_312.setValue($Checkbox_312.java)
>       at 
> org.apache.tapestry.form.Checkbox.rewindFormComponent(Checkbox.java:70)
>       at 
> org.apache.tapestry.form.AbstractFormComponent.renderComponent(AbstractFormComponent.java:115)
>       at 
> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617)
>       at 
> org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434)
>       at 
> org.apache.tapestry.form.FormSupportImpl.rewind(FormSupportImpl.java:542)
>       at org.apache.tapestry.form.Form.renderComponent(Form.java:226)
>       at 
> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617)
>       at org.apache.tapestry.form.Form.rewind(Form.java:327)
>       at 
> org.apache.tapestry.engine.RequestCycle.rewindForm(RequestCycle.java:441)
>       at org.apache.tapestry.form.Form.trigger(Form.java:338)
>       at 
> org.apache.tapestry.engine.DirectService.triggerComponent(DirectService.java:144)
>       at 
> org.apache.tapestry.engine.DirectService.service(DirectService.java:130)
>       at $IEngineService_1069b6ddbf3.service($IEngineService_1069b6ddbf3.java)
> Then, right after that, FieldLabel's preRenderField() call makes the checkbox 
> call setInspectorEnabled(false) (marked with ****):
>  Stack trace
>       at java.lang.Thread.dumpStack(Thread.java:1158)
>       at 
> com.dtqsoftware.sigep.web.pages.sistema.Parametros.setInspectorEnabled(Parametros.java:72)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:585)
>       at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:491)
>       at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:785)
>       at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:937)
>       at 
> ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:76)
>       at 
> ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:132)
>       at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:1629)
>       at ognl.ASTProperty.setValueBody(ASTProperty.java:105)
>       at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:177)
>       at ognl.SimpleNode.setValue(SimpleNode.java:246)
>       at ognl.Ognl.setValue(Ognl.java:476)
>       at 
> org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.writeCompiled(ExpressionEvaluatorImpl.java:121)
>       at 
> $ExpressionEvaluator_1069b6ddc7a.writeCompiled($ExpressionEvaluator_1069b6ddc7a.java)
>       at 
> org.apache.tapestry.binding.ExpressionBinding.setObject(ExpressionBinding.java:172)
>       at $Checkbox_312.setValue($Checkbox_312.java)
>       at 
> org.apache.tapestry.form.Checkbox.rewindFormComponent(Checkbox.java:70)
>       at 
> org.apache.tapestry.form.AbstractFormComponent.renderComponent(AbstractFormComponent.java:115)
>       at 
> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617)
>       at 
> org.apache.tapestry.form.FormSupportImpl.prerenderField(FormSupportImpl.java:683)
> ****  at org.apache.tapestry.form.Form.prerenderField(Form.java:411)
> ****  at 
> org.apache.tapestry.valid.FieldLabel.renderComponent(FieldLabel.java:49)
>       at 
> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617)
>       at 
> org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434)
>       at 
> org.apache.tapestry.form.FormSupportImpl.rewind(FormSupportImpl.java:542)
>       at org.apache.tapestry.form.Form.renderComponent(Form.java:226)
>       at 
> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617)
>       at org.apache.tapestry.form.Form.rewind(Form.java:327)
>       at 
> org.apache.tapestry.engine.RequestCycle.rewindForm(RequestCycle.java:441)
>       at org.apache.tapestry.form.Form.trigger(Form.java:338)
>       at 
> org.apache.tapestry.engine.DirectService.triggerComponent(DirectService.java:144)
>       at 
> org.apache.tapestry.engine.DirectService.service(DirectService.java:130)
> I guess there's a problem with this pre-rendering, that causes the checkbox 
> to be nullified when using an associated FieldLabel.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to