我正试图在自定义组件中包含的两个不同组合中设置selectedItem
。我有一个Java类,它通过args (Map<String,Object>)
的映射将参数发送到zul。
在这个映射中,我发送了2个ListModelList和2个Object(ListModelList<Object1> list1
,ListModelList<Object2> list2, Object1 o1, Object2 o2)
)。列表应该填充组合框,对象选择项目。
- 如果我尝试使用
selectedItem = ${arg.o1}
选择项目,我会出现转换错误,类似于:
无法转换
Object
。。。进入Comboitem
- 如果我试图用我想要选择的对象设置组合项的值,我会得到错误:
不是孩子:
<Comboitem null>
-
如果我试图使用
"selectedIndex = ${arg.index1}"
(假设index1是对象在其列表中的位置)通过他的索引来选择项目,它会返回一个越界错误。 -
如果我试图通过
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);
然后发送地图
如果列表正确加载到您的列表框中,则选择将是正确的。
注意:自定义组件可以有一个控制器;)