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) { >> List<SelectObj> 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); >> >> List<SelectObj> 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"); >> List<SelectObj> 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="false">Show</t:zone> >> <t:zone t:id="select2ValueZone"><select 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<\/option><option value='5'>5 post ajax<\/option><option value='6'>6 >> post ajax<\/option><option value='7'>7 post ajax<\/option><\/select> >> <input><\/input>","select1ValueZone":"Show"}} >> >> > -- Howard M. Lewis Ship Creator of Apache Tapestry The source for Tapestry training, mentoring and support. Contact me to learn how I can get you up and productive in Tapestry fast! (971) 678-5210 http://howardlewisship.com --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org