You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Ameet Shah <as...@tirawireless.com> on 2003/08/11 19:19:37 UTC
MultiplePropertySelection HELP?!
Hello,
I am trying to use the multiple property selection component in the Tapestry contrib library. I have been able to set it up so that it displays the specified output correctly, but for some reason, when I submit the form, it the list is empty despite the fact that I have more than one option selected. It appears that it is actually removing everything from the list, and then not re-adding the ones that are selected. Has anyone else had a similar problem? Its probably a config issue on my part.
Any help would be GREATLY appreciated. Thanks!
Here is the relevant code:
AddCapability.page
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE page-specification PUBLIC
"-//Apache Software Foundation//Tapestry Specification 3.0//EN"
"http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
<page-specification class="com.tira.tapestry.devicecaps.pages.AddCapabilityPage">
<!-- capability description text field -->
<component id="description" type="TextField">
<binding name="value" expression="desc"/>
</component>
<!-- capability classification select box -->
<component id="classificationBox" type="PropertySelection">
<binding name="model" expression="cb.classificationSelectionModel"/>
<binding name="value" expression="classification"/>
<binding name="submitOnChange" expression="false"/>
</component>
<component id="selectedDevicesBox" type="contrib:MultiplePropertySelection">
<binding name="model" expression="devicePropertySelection"/>
<binding name="selectedList" expression="selectedDevices"/>
</component>
</page-specification>
AddCapability.java
/*
* Created on Aug 7, 2003
*
*/
package com.tira.tapestry.devicecaps.pages;
import org.apache.tapestry.html.BasePage;
import org.apache.tapestry.IRequestCycle;
import com.tira.tapestry.devicecaps.models.DevicePropertySelectionModel;
import com.tira.tapestry.devicecaps.beans.ClassificationListingBean;
import com.tira.tapestry.devicecaps.beans.DeviceListingBean;
import java.util.List;
/**
* @author ashah
*
*/
public class AddCapabilityPage extends BasePage {
// component values
private String desc;
private String classification;
private List selectedDevices;
private DevicePropertySelectionModel devicePropertySelection;
// beans
private ClassificationListingBean cb;
private DeviceListingBean db;
public AddCapabilityPage() {
cb = new ClassificationListingBean();
db = new DeviceListingBean();
// by default, we select all devices
selectedDevices = db.getDeviceList();
devicePropertySelection = new DevicePropertySelectionModel(selectedDevices);
}
public ClassificationListingBean getCb() {
return cb;
}
public void setCb(ClassificationListingBean value) {
cb = value;
}
public DeviceListingBean getDb() {
return db;
}
public void setDb(DeviceListingBean value) {
db = value;
}
public void attachSubmitAction(IRequestCycle cycle) {
}
/**
* @return
*/
public String getDesc() {
return desc;
}
/**
* @param string
*/
public void setDesc(String string) {
desc = string;
}
/**
* @return
*/
public String getClassification() {
return classification;
}
/**
* @param string
*/
public void setClassification(String string) {
classification = string;
}
/**
* @return
*/
public List getSelectedDevices() {
return selectedDevices;
}
/**
* @param list
*/
public void setSelectedDevices(List list) {
selectedDevices = list;
}
/**
* @return
*/
public DevicePropertySelectionModel getDevicePropertySelection() {
return devicePropertySelection;
}
/**
* @param model
*/
public void setDevicePropertySelection(DevicePropertySelectionModel model) {
devicePropertySelection = model;
}
}
DevicePropertySelectionModel.java
/*
* Created on Jul 29, 2003
*
*/
package com.tira.tapestry.devicecaps.models;
import java.io.Serializable;
import org.apache.tapestry.form.IPropertySelectionModel;
import java.util.List;
/**
* @author ashah
*
* Note that this class is used for both PropertySelections and Select's since it
* is essentially using the same data, just formatting it differently.
*/
public class DevicePropertySelectionModel
implements IPropertySelectionModel, Serializable {
private List deviceList;
public DevicePropertySelectionModel(List deviceList) {
this.deviceList = deviceList;
}
/* (non-Javadoc)
* @see org.apache.tapestry.form.IPropertySelectionModel#getOptionCount()
*/
public int getOptionCount() {
return deviceList.size();
}
/* (non-Javadoc)
* @see org.apache.tapestry.form.IPropertySelectionModel#getOption(int)
*/
public Object getOption(int index) {
return deviceList.get(index);
}
/* (non-Javadoc)
* @see org.apache.tapestry.form.IPropertySelectionModel#getLabel(int)
*/
public String getLabel(int index) {
return (String)deviceList.get(index);
}
/* (non-Javadoc)
* @see org.apache.tapestry.form.IPropertySelectionModel#getValue(int)
*/
public String getValue(int index) {
// return index+1 so that we don't have values starting from 0
return String.valueOf(index+1);
}
/* (non-Javadoc)
* @see org.apache.tapestry.form.IPropertySelectionModel#translateValue(java.lang.String)
*/
public Object translateValue(String value) {
// TODO Given the device model name, find the rest of the information about the device.
return getOption(Integer.parseInt(value));
}
}
Ameet Shah