Java 如何链接Wicket下拉列表事件?
我正在尝试链接下拉列表事件 我有这些数据: 名称auidi(a4{200620072008},a6{200620072009},tt{200520082010}) 福特(克朗{20092010},逃逸{20082009}) 当我选择汽车的名称时,我希望显示模型。稍后,我选择模型,并希望显示年份 我发现了这个例子: 但是,有两个下拉列表。还有一张地图。我应该在地图中使用地图吗?如果是,如何设置模型 当地图处于类型Java 如何链接Wicket下拉列表事件?,java,ajax,drop-down-menu,wicket,Java,Ajax,Drop Down Menu,Wicket,我正在尝试链接下拉列表事件 我有这些数据: 名称auidi(a4{200620072008},a6{200620072009},tt{200520082010}) 福特(克朗{20092010},逃逸{20082009}) 当我选择汽车的名称时,我希望显示模型。稍后,我选择模型,并希望显示年份 我发现了这个例子: 但是,有两个下拉列表。还有一张地图。我应该在地图中使用地图吗?如果是,如何设置模型 当地图处于类型map中时,模型如下所示: IModel<List<? extends S
map
中时,模型如下所示:
IModel<List<? extends String>> makeChoices =
new AbstractReadOnlyModel<List<? extends String>>()
{
@Override
public List<String> getObject()
{
Set<String> keys = modelsMap.keySet();
List<String> list = new ArrayList<String>(keys);
return list;
}
};
IModel对于3个下拉选项,您需要3个模型,所有模型都需要表示提供选项的列表。您需要嵌套贴图来模拟它们之间的关系,然后再进行检索,例如:
Map<String, Map<String, List<String>>> cars; //fill data
IModel<List<? extends String>> makeChoices = new AbstractReadOnlyModel<List<? extends String>>() {
@Override
public List<String> getObject() {
Set<String> keys = cars.keySet();
List<String> list = new ArrayList<String>(keys);
return list;
}
};
IModel<List<? extends String>> modelChoices = new AbstractReadOnlyModel<List<? extends String>>() {
@Override
public List<String> getObject() {
Map<String, List<String>> models = cars.get(selectedMake);
if (models == null) {
return Collections.emptyList();
} else {
List<String> list = new ArrayList<String>(models.keySet());
return list;
}
}
};
IModel<List<? extends String>> yearChoices = new AbstractReadOnlyModel<List<? extends String>>() {
@Override
public List<String> getObject() {
Map<String, List<String>> models = cars.get(selectedMake);
if (models == null) {
return Collections.emptyList();
} else {
return models.get(selectedModel);
}
}
};
汽车地图//填充数据
IModelIn您的第二个模型(模型选择);在“models=Collections.emptyList()”行中,它给出了不兼容的类型警告;在第三个模型中,Netbeans警告我同样的一行。那么最终的DropDownChoice makes=new DropDownChoice(“makes”,new PropertyModel)(这个“selectedMake”),makeChoices)呢;第2款和第3款的功能有关于缺少返回语句的警告我已经修改了返回语句,这是它应该是什么样子的建议。您仍然需要管理所选选项的内部状态,以便在较低级别提供选项。没有空地图,只有空列表。
Map<String, Map<String, List<String>>> cars; //fill data
IModel<List<? extends String>> makeChoices = new AbstractReadOnlyModel<List<? extends String>>() {
@Override
public List<String> getObject() {
Set<String> keys = cars.keySet();
List<String> list = new ArrayList<String>(keys);
return list;
}
};
IModel<List<? extends String>> modelChoices = new AbstractReadOnlyModel<List<? extends String>>() {
@Override
public List<String> getObject() {
Map<String, List<String>> models = cars.get(selectedMake);
if (models == null) {
return Collections.emptyList();
} else {
List<String> list = new ArrayList<String>(models.keySet());
return list;
}
}
};
IModel<List<? extends String>> yearChoices = new AbstractReadOnlyModel<List<? extends String>>() {
@Override
public List<String> getObject() {
Map<String, List<String>> models = cars.get(selectedMake);
if (models == null) {
return Collections.emptyList();
} else {
return models.get(selectedModel);
}
}
};