最近ウィケットを使い始めました。あなたのプロジェクトの例で、本「Apache wicket by Vaynberg」の「リンクされた選択ボックス」を使用しようとしました。
本から例を再作成しました:
public class LinkedSelectboxesPage extends WebPage {
private Country country;
private City city;
public LinkedSelectboxesPage() {
Database.buildData();
country = Database.getCountries().get(0);
FeedbackPanel feedbackPanel = new FeedbackPanel("feedback");
add(feedbackPanel);
Form form = new Form("form");
add(form);
DropDownChoice<Country> countries = new DropDownChoice<Country>(
"countries",
new PropertyModel<Country>(this, "country"),
new CountriesModel(),
new ChoiceRenderer<Country>("name", "code")) {
protected boolean
wantOnSelectionChangedNotifications() {
return true;
}
protected void
onSelectionChanged(Country newSelection) {
city = 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"));
cities.setRequired(true);
form.add(cities);
}
private static class CountriesModel extends LoadableDetachableModel<List<? extends Country>> {
protected List<? extends Country> load() {
return Database.getCountries();
}
}
private class CitiesModel extends LoadableDetachableModel<List<? extends City>> {
protected List<? extends City> load() {
return Database.getCities(country.getCode());
}
}
}
プロジェクトでリンクされた選択ボックスを使用しようとすると、関数本体の前に固定されているブレークポイントが達成されません。
public class AddArticlePanel extends Panel {
private Type type;
private Subtype subtype;
private List<Type> typesList;
private List<Subtype> subtypesList;
@SpringBean
@SuppressWarnings("unused")
public static ITypeDao typeDao;
@SpringBean
@SuppressWarnings("unused")
private ISubtypeDao subtypeDao;
public AddArticlePanel(String id) {
super(id);
this.typesList = typeDao.loadAllTypes();
this.type = this.typesList.get(0);
Form form = new Form("form");
add(form);
FormComponent<String> tbTitleArticle = new TextField<String>("titleArticle").setRequired(true);
form.add(tbTitleArticle);
FormComponent<String> taTextArticle = new TextArea<String>("textArticle").setRequired(true);
form.add(taTextArticle);
DropDownChoice<Type> ddcTypes = new DropDownChoice<Type>(
"typeArticle",
new PropertyModel<Type>(this, "type"),
new TypesModel(),
new ChoiceRenderer<Type>("name", "id")) {
protected boolean wantOnSelectionChangedNotifications() {
return true;
}
protected void onSelectionChanged(Type newSelection) {
type = null;
}
};
ddcTypes.setRequired(true);
form.add(ddcTypes);
DropDownChoice<Subtype> ddcSubtypes = new DropDownChoice<Subtype>(
"subtypeArticle",
new PropertyModel<Subtype>(this, "subtype"),
new SubtypesModel(),
new ChoiceRenderer<Subtype>("name", "id"));
ddcSubtypes.setRequired(true);
form.add(ddcSubtypes);
}
public AddArticlePanel(String id, IModel<?> model) {
super(id, model);
}
private static class TypesModel extends LoadableDetachableModel<List<? extends Type>> {
protected List<? extends Type> load() {
return typeDao.loadAllTypes();
}
}
private class SubtypesModel extends LoadableDetachableModel<List<? extends Subtype>> {
protected List<? extends Subtype> load() {
return subtypeDao.loadSubtypesByTypeId(type.getId());
}
}
}
なぜそれが起こったのか理解できません。助けてください、私の英語でごめんなさい。