如何在 h:selectManyListbox 中预先 select 数据
How to pre-select data in h:selectManyListbox
这是一个常见问题,我已经看到了基本的解决方案(填充 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>
class 的一个实例。但是,在标记 <f:selectItems>
中,值:#{action.ap.statusItens}
是 List<SelectItem>
.
的实例
我用我想要预先 select 列表框的值填充 #{aprvAction.ap.statuses}
,但没有用。我认为这是因为它们在 <selectManyListBox>
和 <selectItems>
.
中是不同的对象
如何解决这个问题,并在 <selectManyListBox>
中显示 select 前的值?
h:selectManyListbox
中的 value
应该是 f:selectItems
中 itemValue
的子集。
创建一个方法,其中 return 所选状态的列表或数组。在 h:selectManyListbox
的 value
属性中使用此方法。此方法中 list/array returned 的任何值都应与 f:selectItems
中使用的 {itemValue, itemLabel} 对集合中的 itemValue 相匹配。
JSF 将使用 equals()
方法将可用项目与(预)选定项目进行比较。
对于标准对象,例如 String
,这是 already implemented。
对于自定义对象,例如您的 Status
实体,您有责任确保已在class.
另请参阅:
- How to populate options of h:selectOneMenu from database?
- Right way to implement equals contract
这是一个常见问题,我已经看到了基本的解决方案(填充 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>
class 的一个实例。但是,在标记 <f:selectItems>
中,值:#{action.ap.statusItens}
是 List<SelectItem>
.
我用我想要预先 select 列表框的值填充 #{aprvAction.ap.statuses}
,但没有用。我认为这是因为它们在 <selectManyListBox>
和 <selectItems>
.
如何解决这个问题,并在 <selectManyListBox>
中显示 select 前的值?
h:selectManyListbox
中的 value
应该是 f:selectItems
中 itemValue
的子集。
创建一个方法,其中 return 所选状态的列表或数组。在 h:selectManyListbox
的 value
属性中使用此方法。此方法中 list/array returned 的任何值都应与 f:selectItems
中使用的 {itemValue, itemLabel} 对集合中的 itemValue 相匹配。
JSF 将使用 equals()
方法将可用项目与(预)选定项目进行比较。
对于标准对象,例如 String
,这是 already implemented。
对于自定义对象,例如您的 Status
实体,您有责任确保已在class.
另请参阅:
- How to populate options of h:selectOneMenu from database?
- Right way to implement equals contract