通过参数设置selectedItem



我正试图在自定义组件中包含的两个不同组合中设置selectedItem。我有一个Java类,它通过args (Map<String,Object>)的映射将参数发送到zul。

在这个映射中,我发送了2个ListModelList和2个Object(ListModelList<Object1> list1ListModelList<Object2> list2, Object1 o1, Object2 o2))。列表应该填充组合框,对象选择项目。

  1. 如果我尝试使用selectedItem = ${arg.o1}选择项目,我会出现转换错误,类似于:

无法转换Object。。。进入Comboitem

  1. 如果我试图用我想要选择的对象设置组合项的值,我会得到错误:

不是孩子:<Comboitem null>

  1. 如果我试图使用"selectedIndex = ${arg.index1}"(假设index1是对象在其列表中的位置)通过他的索引来选择项目,它会返回一个越界错误。

  2. 如果我试图通过onAfterRender="self.setSelectedIndex(${arg.index1})"选择项目,我会得到错误:

原因:源文件:内联评估:self.setSelectedIndex(${arg.index1});

尝试访问未定义变量或类名的属性

如果我使用${arg.index1}作为标签的值,它将返回期望的值。

您的问题是将ListModelList放入组合框中,然后在ComboItem上进行选择
项目的选择现在通过您的模型完成。

解决方案其实很简单:

list1.setSelection(Arrays.asList(o1));
map.put("list1",list1);
list2.setSelection(Arrays.asList(o2));
map.put("list2",list2);

然后发送地图
如果列表正确加载到您的列表框中,则选择将是正确的。

注意:自定义组件可以有一个控制器;)

最新更新