Re: Extra input field after ajax returning MultiZoneUpdate
Thanks for the fix on this. Do you know when a new build will be added to the snapshot repository so I can pin to it? The last build I am seeing in the repository is from 4/22. On Mon, Apr 19, 2010 at 12:41 PM, Howard Lewis Ship hls...@gmail.comwrote: Please create the issue in Jira. On Mon, Apr 19, 2010 at 9:29 AM, Adam Derkey adam.der...@gmail.com wrote: Should I create a JIRA ticket for this or is there already one created that I can use to track the progress? On Fri, Apr 16, 2010 at 11:06 PM, Howard Lewis Ship hls...@gmail.com wrote: I've been tracking this problem; there's a timing issue when Tapestry adds a hidden field to store the t:formdata; the DOM is being streamed to characters after the input field is added to the DOM, but before it is fully configured. It's deeply tricky stuff. On Fri, Apr 16, 2010 at 11:28 AM, Adam Derkey adam.der...@gmail.com wrote: Was this the right list to send this to? Should I send to the dev list or open a jira ticket? On Wed, Apr 14, 2010 at 3:58 PM, Adam Derkey adam.der...@gmail.com wrote: Using Tapestry 5.2.0-SNAPSHOT I'm updating multiple zones after a select on Change event. The JSON response is including an extra input field after a select field in one of the zones I'm updating. The extra input is then showing up in the rendered page in the browser. Why would tapestry be adding in an extra input field? Is there a way to do this without the extra input being returned? I created this example using the quickstart app and send the entire project if needed. Thanks Adam /* * Form.java */ package com.test.pages; import com.test.model.GenericSelectModel; import com.test.vo.SelectObj; import java.util.ArrayList; import java.util.List; import org.apache.tapestry5.EventContext; import org.apache.tapestry5.SelectModel; import org.apache.tapestry5.ajax.MultiZoneUpdate; import org.apache.tapestry5.annotations.Component; import org.apache.tapestry5.annotations.Property; import org.apache.tapestry5.corelib.components.Select; import org.apache.tapestry5.corelib.components.Zone; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.ioc.services.PropertyAccess; import org.apache.tapestry5.services.Request; /** * * @author aderkey */ public class Form { @Inject private Request request; @Inject private PropertyAccess propertyAccess; @Component(id=selectValue1, parameters = {model=select1Model, encoder=select1Model}) private Select select1; @Property private SelectModel select1Model; @Property private SelectObj selectValue1; @Component(id=selectValue2, parameters = {model=select2Model, encoder=select2Model}) private Select select2; @Property private SelectModel select2Model; @Property private SelectObj selectValue2; @Component(id=select1ValueZone) private Zone select1ValueZone; @Component(id=select2ValueZone) private Zone select2ValueZone; void onActivate(EventContext ctx) { ListSelectObj select1List = new ArrayList(); select1List.add(new SelectObj(0, 0 pre ajax)); select1List.add(new SelectObj(1, 1 pre ajax)); select1List.add(new SelectObj(2, 2 pre ajax)); select1List.add(new SelectObj(3, 3 pre ajax)); select1List.add(new SelectObj(4, 4 pre ajax)); select1Model = new GenericSelectModel(select1List, SelectObj.class, text, id, propertyAccess); ListSelectObj select2List = new ArrayList(); select2List.add(new SelectObj(0, 0 pre ajax)); select2List.add(new SelectObj(1, 1 pre ajax)); select2List.add(new SelectObj(2, 2 pre ajax)); select2List.add(new SelectObj(3, 3 pre ajax)); select2Model = new GenericSelectModel(select2List, SelectObj.class, text, id, propertyAccess); } public Object onValueChangedFromSelectValue1(SelectObj selectObj) { System.out.println(onValueChangedSelectValue1); ListSelectObj select2List = new ArrayList(); select2List.add(new SelectObj(4, 4 post ajax)); select2List.add(new SelectObj(5, 5 post ajax)); select2List.add(new SelectObj(6, 6 post ajax)); select2List.add(new SelectObj(7, 7 post ajax)); select2Model = new GenericSelectModel(select2List, SelectObj.class, text, id, propertyAccess); if(request.isXHR()) { return new MultiZoneUpdate(select1ValueZone, select1ValueZone.getBody()).add(select2ValueZone, select2ValueZone.getBody()); } else { return this; } } } Form.tml body t:type=Layout t:title=form t:bodyId=formPage xmlns:t= http
Re: Extra input field after ajax returning MultiZoneUpdate
Should I create a JIRA ticket for this or is there already one created that I can use to track the progress? On Fri, Apr 16, 2010 at 11:06 PM, Howard Lewis Ship hls...@gmail.comwrote: I've been tracking this problem; there's a timing issue when Tapestry adds a hidden field to store the t:formdata; the DOM is being streamed to characters after the input field is added to the DOM, but before it is fully configured. It's deeply tricky stuff. On Fri, Apr 16, 2010 at 11:28 AM, Adam Derkey adam.der...@gmail.com wrote: Was this the right list to send this to? Should I send to the dev list or open a jira ticket? On Wed, Apr 14, 2010 at 3:58 PM, Adam Derkey adam.der...@gmail.com wrote: Using Tapestry 5.2.0-SNAPSHOT I'm updating multiple zones after a select on Change event. The JSON response is including an extra input field after a select field in one of the zones I'm updating. The extra input is then showing up in the rendered page in the browser. Why would tapestry be adding in an extra input field? Is there a way to do this without the extra input being returned? I created this example using the quickstart app and send the entire project if needed. Thanks Adam /* * Form.java */ package com.test.pages; import com.test.model.GenericSelectModel; import com.test.vo.SelectObj; import java.util.ArrayList; import java.util.List; import org.apache.tapestry5.EventContext; import org.apache.tapestry5.SelectModel; import org.apache.tapestry5.ajax.MultiZoneUpdate; import org.apache.tapestry5.annotations.Component; import org.apache.tapestry5.annotations.Property; import org.apache.tapestry5.corelib.components.Select; import org.apache.tapestry5.corelib.components.Zone; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.ioc.services.PropertyAccess; import org.apache.tapestry5.services.Request; /** * * @author aderkey */ public class Form { @Inject private Request request; @Inject private PropertyAccess propertyAccess; @Component(id=selectValue1, parameters = {model=select1Model, encoder=select1Model}) private Select select1; @Property private SelectModel select1Model; @Property private SelectObj selectValue1; @Component(id=selectValue2, parameters = {model=select2Model, encoder=select2Model}) private Select select2; @Property private SelectModel select2Model; @Property private SelectObj selectValue2; @Component(id=select1ValueZone) private Zone select1ValueZone; @Component(id=select2ValueZone) private Zone select2ValueZone; void onActivate(EventContext ctx) { ListSelectObj select1List = new ArrayList(); select1List.add(new SelectObj(0, 0 pre ajax)); select1List.add(new SelectObj(1, 1 pre ajax)); select1List.add(new SelectObj(2, 2 pre ajax)); select1List.add(new SelectObj(3, 3 pre ajax)); select1List.add(new SelectObj(4, 4 pre ajax)); select1Model = new GenericSelectModel(select1List, SelectObj.class, text, id, propertyAccess); ListSelectObj select2List = new ArrayList(); select2List.add(new SelectObj(0, 0 pre ajax)); select2List.add(new SelectObj(1, 1 pre ajax)); select2List.add(new SelectObj(2, 2 pre ajax)); select2List.add(new SelectObj(3, 3 pre ajax)); select2Model = new GenericSelectModel(select2List, SelectObj.class, text, id, propertyAccess); } public Object onValueChangedFromSelectValue1(SelectObj selectObj) { System.out.println(onValueChangedSelectValue1); ListSelectObj select2List = new ArrayList(); select2List.add(new SelectObj(4, 4 post ajax)); select2List.add(new SelectObj(5, 5 post ajax)); select2List.add(new SelectObj(6, 6 post ajax)); select2List.add(new SelectObj(7, 7 post ajax)); select2Model = new GenericSelectModel(select2List, SelectObj.class, text, id, propertyAccess); if(request.isXHR()) { return new MultiZoneUpdate(select1ValueZone, select1ValueZone.getBody()).add(select2ValueZone, select2ValueZone.getBody()); } else { return this; } } } Form.tml body t:type=Layout t:title=form t:bodyId=formPage xmlns:t= http://tapestry.apache.org/schema/tapestry_5_1_0.xsd; xmlns:p=tapestry:parameter form t:type=Form t:id=form t:clientValidation=false action=# select t:type=Select t:id=selectValue1 t:validate=required t:zone=select1ValueZone/ t:zone t:id=select1ValueZone visible=falseShow/t:zone t:zone t:id=select2ValueZoneselect t:type=Select t:id=selectValue2 t:validate=required//t:zone /form /body JSON Response: {content:,zones:{select2ValueZone:select id='selectValue2
Re: Extra input field after ajax returning MultiZoneUpdate
Was this the right list to send this to? Should I send to the dev list or open a jira ticket? On Wed, Apr 14, 2010 at 3:58 PM, Adam Derkey adam.der...@gmail.com wrote: Using Tapestry 5.2.0-SNAPSHOT I'm updating multiple zones after a select on Change event. The JSON response is including an extra input field after a select field in one of the zones I'm updating. The extra input is then showing up in the rendered page in the browser. Why would tapestry be adding in an extra input field? Is there a way to do this without the extra input being returned? I created this example using the quickstart app and send the entire project if needed. Thanks Adam /* * Form.java */ package com.test.pages; import com.test.model.GenericSelectModel; import com.test.vo.SelectObj; import java.util.ArrayList; import java.util.List; import org.apache.tapestry5.EventContext; import org.apache.tapestry5.SelectModel; import org.apache.tapestry5.ajax.MultiZoneUpdate; import org.apache.tapestry5.annotations.Component; import org.apache.tapestry5.annotations.Property; import org.apache.tapestry5.corelib.components.Select; import org.apache.tapestry5.corelib.components.Zone; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.ioc.services.PropertyAccess; import org.apache.tapestry5.services.Request; /** * * @author aderkey */ public class Form { @Inject private Request request; @Inject private PropertyAccess propertyAccess; @Component(id=selectValue1, parameters = {model=select1Model, encoder=select1Model}) private Select select1; @Property private SelectModel select1Model; @Property private SelectObj selectValue1; @Component(id=selectValue2, parameters = {model=select2Model, encoder=select2Model}) private Select select2; @Property private SelectModel select2Model; @Property private SelectObj selectValue2; @Component(id=select1ValueZone) private Zone select1ValueZone; @Component(id=select2ValueZone) private Zone select2ValueZone; void onActivate(EventContext ctx) { ListSelectObj select1List = new ArrayList(); select1List.add(new SelectObj(0, 0 pre ajax)); select1List.add(new SelectObj(1, 1 pre ajax)); select1List.add(new SelectObj(2, 2 pre ajax)); select1List.add(new SelectObj(3, 3 pre ajax)); select1List.add(new SelectObj(4, 4 pre ajax)); select1Model = new GenericSelectModel(select1List, SelectObj.class, text, id, propertyAccess); ListSelectObj select2List = new ArrayList(); select2List.add(new SelectObj(0, 0 pre ajax)); select2List.add(new SelectObj(1, 1 pre ajax)); select2List.add(new SelectObj(2, 2 pre ajax)); select2List.add(new SelectObj(3, 3 pre ajax)); select2Model = new GenericSelectModel(select2List, SelectObj.class, text, id, propertyAccess); } public Object onValueChangedFromSelectValue1(SelectObj selectObj) { System.out.println(onValueChangedSelectValue1); ListSelectObj select2List = new ArrayList(); select2List.add(new SelectObj(4, 4 post ajax)); select2List.add(new SelectObj(5, 5 post ajax)); select2List.add(new SelectObj(6, 6 post ajax)); select2List.add(new SelectObj(7, 7 post ajax)); select2Model = new GenericSelectModel(select2List, SelectObj.class, text, id, propertyAccess); if(request.isXHR()) { return new MultiZoneUpdate(select1ValueZone, select1ValueZone.getBody()).add(select2ValueZone, select2ValueZone.getBody()); } else { return this; } } } Form.tml body t:type=Layout t:title=form t:bodyId=formPage xmlns:t= http://tapestry.apache.org/schema/tapestry_5_1_0.xsd; xmlns:p=tapestry:parameter form t:type=Form t:id=form t:clientValidation=false action=# select t:type=Select t:id=selectValue1 t:validate=required t:zone=select1ValueZone/ t:zone t:id=select1ValueZone visible=falseShow/t:zone t:zone t:id=select2ValueZoneselect t:type=Select t:id=selectValue2 t:validate=required//t:zone /form /body JSON Response: {content:,zones:{select2ValueZone:select id='selectValue2-127fe104b7d' name='selectValue2'option value='4'4 post ajax\/optionoption value='5'5 post ajax\/optionoption value='6'6 post ajax\/optionoption value='7'7 post ajax\/option\/select input\/input,select1ValueZone:Show}}
Extra input field after ajax returning MultiZoneUpdate
Using Tapestry 5.2.0-SNAPSHOT I'm updating multiple zones after a select on Change event. The JSON response is including an extra input field after a select field in one of the zones I'm updating. The extra input is then showing up in the rendered page in the browser. Why would tapestry be adding in an extra input field? Is there a way to do this without the extra input being returned? I created this example using the quickstart app and send the entire project if needed. Thanks Adam /* * Form.java */ package com.test.pages; import com.test.model.GenericSelectModel; import com.test.vo.SelectObj; import java.util.ArrayList; import java.util.List; import org.apache.tapestry5.EventContext; import org.apache.tapestry5.SelectModel; import org.apache.tapestry5.ajax.MultiZoneUpdate; import org.apache.tapestry5.annotations.Component; import org.apache.tapestry5.annotations.Property; import org.apache.tapestry5.corelib.components.Select; import org.apache.tapestry5.corelib.components.Zone; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.ioc.services.PropertyAccess; import org.apache.tapestry5.services.Request; /** * * @author aderkey */ public class Form { @Inject private Request request; @Inject private PropertyAccess propertyAccess; @Component(id=selectValue1, parameters = {model=select1Model, encoder=select1Model}) private Select select1; @Property private SelectModel select1Model; @Property private SelectObj selectValue1; @Component(id=selectValue2, parameters = {model=select2Model, encoder=select2Model}) private Select select2; @Property private SelectModel select2Model; @Property private SelectObj selectValue2; @Component(id=select1ValueZone) private Zone select1ValueZone; @Component(id=select2ValueZone) private Zone select2ValueZone; void onActivate(EventContext ctx) { ListSelectObj select1List = new ArrayList(); select1List.add(new SelectObj(0, 0 pre ajax)); select1List.add(new SelectObj(1, 1 pre ajax)); select1List.add(new SelectObj(2, 2 pre ajax)); select1List.add(new SelectObj(3, 3 pre ajax)); select1List.add(new SelectObj(4, 4 pre ajax)); select1Model = new GenericSelectModel(select1List, SelectObj.class, text, id, propertyAccess); ListSelectObj select2List = new ArrayList(); select2List.add(new SelectObj(0, 0 pre ajax)); select2List.add(new SelectObj(1, 1 pre ajax)); select2List.add(new SelectObj(2, 2 pre ajax)); select2List.add(new SelectObj(3, 3 pre ajax)); select2Model = new GenericSelectModel(select2List, SelectObj.class, text, id, propertyAccess); } public Object onValueChangedFromSelectValue1(SelectObj selectObj) { System.out.println(onValueChangedSelectValue1); ListSelectObj select2List = new ArrayList(); select2List.add(new SelectObj(4, 4 post ajax)); select2List.add(new SelectObj(5, 5 post ajax)); select2List.add(new SelectObj(6, 6 post ajax)); select2List.add(new SelectObj(7, 7 post ajax)); select2Model = new GenericSelectModel(select2List, SelectObj.class, text, id, propertyAccess); if(request.isXHR()) { return new MultiZoneUpdate(select1ValueZone, select1ValueZone.getBody()).add(select2ValueZone, select2ValueZone.getBody()); } else { return this; } } } Form.tml body t:type=Layout t:title=form t:bodyId=formPage xmlns:t= http://tapestry.apache.org/schema/tapestry_5_1_0.xsd; xmlns:p=tapestry:parameter form t:type=Form t:id=form t:clientValidation=false action=# select t:type=Select t:id=selectValue1 t:validate=required t:zone=select1ValueZone/ t:zone t:id=select1ValueZone visible=falseShow/t:zone t:zone t:id=select2ValueZoneselect t:type=Select t:id=selectValue2 t:validate=required//t:zone /form /body JSON Response: {content:,zones:{select2ValueZone:select id='selectValue2-127fe104b7d' name='selectValue2'option value='4'4 post ajax\/optionoption value='5'5 post ajax\/optionoption value='6'6 post ajax\/optionoption value='7'7 post ajax\/option\/select input\/input,select1ValueZone:Show}}