如何在h:selectManyListbox中预先选择数据

时间:2015-03-20 19:11:39

标签: jsf richfaces jsf-1.2

这是一个常见问题,我已经看到了基本解决方案(填充selectManyListBox)。这是我的JSF 1.2页面的代码:

<h:selectManyListbox id="statusMenu" converter="statusConverter" value="#{aprvAction.ap.statuses}" >
    <f:selectItems id="statusItem" value="#{action.ap.statusItens}"/>
    <a:support event="onclick" ajaxSingle="true" immediate="true" eventsQueue="queueGeral" />
    <a:support event="onchange" ajaxSingle="true" eventsQueue="queueGeral" process="statusMenu"/>
</h:selectManyListbox>

问题是#{aprvAction.ap.statuses}List<Status>类的实例。但是,在代码<f:selectItems>中,值#{action.ap.statusItens}List<SelectItem>的实例。

我使用我想要预先选择ListBox的值填充#{aprvAction.ap.statuses},但不起作用。我认为这是因为它们是<selectManyListBox><selectItems>中的不同对象。

如何解决此问题,并在<selectManyListBox>

中显示预先选择的值

2 个答案:

答案 0 :(得分:1)

JSF将使用equals()方法将可用项目与(预)选定项目进行比较。

如果是标准对象,例如String,则为already implemented

如果是自定义对象,例如您的Status实体,则您有责任确保在课程中正确实施了equals()(和hashCode())方法。

另见:

答案 1 :(得分:0)

value中的

h:selectManyListbox应该是itemValuef:selectItems的子集。

创建一个返回所选状态的List或Array的方法。在value的{​​{1}}属性中使用此方法。此方法中返回的列表/数组中的任何值都应与h:selectManyListbox中使用的{itemValue,itemLabel}对集合中的itemValue匹配。