Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何链接Wicket下拉列表事件?_Java_Ajax_Drop Down Menu_Wicket - Fatal编程技术网

Java 如何链接Wicket下拉列表事件?

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

我正在尝试链接下拉列表事件

我有这些数据:

名称auidi(a4{200620072008},a6{200620072009},tt{200520082010}) 福特(克朗{20092010},逃逸{20082009})

当我选择汽车的名称时,我希望显示模型。稍后,我选择模型,并希望显示年份

我发现了这个例子:

但是,有两个下拉列表。还有一张地图。我应该在地图中使用地图吗?如果是,如何设置模型

当地图处于类型
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);
            }
        }
    };