marți, 20 octombrie 2015

[OmniFaces utilities (2.0)] Convert an Iterable<E> to a DataModel<E>


[OmniFaces utilities] The iterableToModel() function converts an Iterable<E> to a DataModel<E>. Useful when you want to iterate over an Iterable, which includes any type of Collection (which includes e.g. a Set) in for example <ui:repeat> and <h:dataTable>. When iterating specifically over a Set using the Converters#setToList(Set) is an alternative to this. Use this for more general cases or when the exact collection type is unknown. For those same components Converters#iterableToList(Iterable) is another alternative. Use this when a DataModel is specifically needed.

Function:
See also: IterableDataModel
Usage:

The IterableDataModel can be used to encapsulate nearly every collection type, including Collection derived types such as List and Set. As such this specific DataModel can be used instead of more specific DataModels like ListDataModel and JSF 2.2's CollectionDataModel.

Use of:iterableToModel() in <ui:repeat/>:

<ui:repeat value="#{of:iterableToModel(fooBean.fooSet)}" var="item" varStatus="loop">
 #{item}#{!loop.last ? ', ' : ''}
</ui:repeat>

Render a table only if it has rows:

<h:dataTable value="#{fooBean.fooSet}" rendered="#{of:iterableToModel(fooBean.fooSet).rowCount ne 0}" var="t">
 ...
<h:dataTable/>

Niciun comentariu:

Trimiteți un comentariu