Skip to main content
Version: 2.18.x.x LTS

CollectingFilter

The CollectingFilter is similar to the ELMappingFilter but instead of storing the data attributes or control values in the repository of the entity, it uses a specified repository and stores the data in a HashSet. This set is accessible with the attribute's name and can be used to efficiently query for existence of values in filtering conditions of subsequent entities.

Configuration

NameType, usage constraints, defaultsDescription
repositoryrequired: paraVal
default: none
type: string
The repository name used to store either the attribute or control values.

Example

The following example shows how the CollectingFilter can be used to store user IDs in a set:

<dataFilter type="CollectingFilter">
!-- the filter configuration -->
<dp:paraVal name="repository" value="storage" />
<!-- attribute created on the control object -->
<dp:ctlVal name="userId" value="#{in.user.id}"/>
</dataFilter>

A filter of a subsequent entity uses the stored users for filtering:

<dataFilter type="ELMappingFilter">
<dp:paraVal name="skipwhen" value="#{coll:contains(ctl.storage.userId, in.user.uid)}" />
</dataFilter>