按参数设置selectedItem

时间:2014-09-17 16:20:48

标签: combobox zk selecteditem

我尝试将selectedItem设置为自定义组件中包含的两个不同的组合。我有一个Java类,它通过args (Map<String,Object>)

的映射将参数发送到zul

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

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

    无法将Object ...转换为Comboitem

    1. 如果我尝试让Comboitem使用我想要选择的对象设置其值,我收到错误:
    2.   

      不是孩子:<Comboitem null>

      1. 如果我尝试使用"selectedIndex = ${arg.index1}"通过索引选择项目(假设index1是列表中对象的位置),则会返回超出范围的错误。

      2. 如果我尝试按onAfterRender="self.setSelectedIndex(${arg.index1})"选择项目,我收到了错误消息:

      3.   

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

             

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

        的属性

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

1 个答案:

答案 0 :(得分:1)

您的问题是,您将ListModelList放入组合框并选择了ComboItem
现在通过您的模型选择项目。

解决方案实际上很简单:

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

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

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