Ja resolvi o problema. A modificacao esta em vermelho. O tercer combo na iniciacao ficava vazio.
Obrigado,
package com.myapp.wicket;
import java.util.List;
import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.form.ChoiceRenderer;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.PropertyModel;
public class HomePagePais extends WebPage {
private Country country;
private City city;
private Town town;
private String codigoCity;
public HomePagePais(final PageParameters parameters) {
country = Database.getCountries().get(0);
add(new FeedbackPanel("feedback"));
Form<?> form = new Form<Void>("form") {
@Override
protected void onSubmit() {
info("Your favorite city is: " + city.getName() + " in " + country.getName()+" y barrio "+ town.getName());
}
};
add(form);
DropDownChoice<Country> countries = new DropDownChoice<Country>("countries",
new PropertyModel<Country>(this, "country"), new CountriesModel(),
new ChoiceRenderer<Country>("name", "code")) {
@Override
protected boolean wantOnSelectionChangedNotifications() {
return true;
}
@Override
protected void onSelectionChanged(Country newSelection) {
city = null;
town = null;
}
};
countries.setRequired(true);
form.add(countries);
DropDownChoice<City> cities = new DropDownChoice<City>("cities", new PropertyModel<City>(
this, "city"), new CitiesModel(), new ChoiceRenderer<City>("name", "code")) // NEW
{
@Override
protected boolean wantOnSelectionChangedNotifications() {
// System.out.println("wanOnSelection de city :"+city.getCode());
return true;
}
@Override
protected void onSelectionChanged(City newSelection) {
//Modificacao
codigoCity=city.getCode();
town=null;
}
} // END NEW
;
cities.setRequired(true);
form.add(cities);
// NEW
DropDownChoice<Town> towns = new DropDownChoice<Town>("towns", new PropertyModel<Town>(
this, "town"), new BarriosModel(), new ChoiceRenderer<Town>("name", "code"));
towns.setRequired(true);
form.add(towns);
// END NEW
}
private static class CountriesModel extends LoadableDetachableModel<List<? extends Country>> {
@Override
protected List<? extends Country> load() {
return Database.getCountries();
}
}
private class CitiesModel extends LoadableDetachableModel<List<? extends City>> {
@Override
protected List<? extends City> load() {
return Database.getCities(country.getCode());
}
}
// NEW
private class BarriosModel extends LoadableDetachableModel<List<? extends Town>> {
@Override
protected List<? extends Town> load() {
return Database.getTowns(country.getCode(), codigoCity);
}
}
// END NEW
}