我尝试将selectedItem
设置为自定义组件中包含的两个不同的组合。我有一个Java类,它通过args (Map<String,Object>)
。
在这张地图中,我发送了2个ListModelList和2个对象(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}
作为标签的值,则返回预期值。
答案 0 :(得分:1)
您的问题是,您将ListModelList
放入组合框并选择了ComboItem
。
现在通过您的模型选择项目。
解决方案实际上很简单:
list1.setSelection(Arrays.asList(o1));
map.put("list1",list1);
list2.setSelection(Arrays.asList(o2));
map.put("list2",list2);
然后发送地图。
如果列表已正确加载到列表框中,则选择将是正确的。
注意:自定义组件可以有一个控制器;)