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"}}

Reply via email to