Requête cachée

Définissez une requête de recherche cachée sur un formulaire pour appliquer des critères, colonnes, tris ou agrégations invisibles pour les utilisateurs.

L’objet ComponentSearchPresenter accepte une propriété hiddenRequest avec un bean de classe com.flower.docs.domain.search.SearchRequest. Cette requête permet de :

  • ajouter des critères masqués
  • configurer les colonnes à afficher
  • définir le tri par défaut
  • définir le nombre de résultats à remonter
  • configurer des agrégations pour l’affichage en arborescence


Exemple

<bean id="monFormulaire" class="com.flower.docs.gui.client.search.ComponentSearchPresenter"
		scope="prototype">
		<!-- ... -->
		<property name="hiddenRequest">
			<bean class="com.flower.docs.domain.search.SearchRequest">
				<property name="selectClause">
					<bean class="com.flower.docs.domain.search.SelectClause">
						<property name="fields">
							<list>
								<!-- Colonnes à afficher -->
								<value>name</value>
								<value>TypeCourrier</value>
							</list>
						</property>
					</bean>
				</property>
				<property name="filterClauses">
					<list>
						<bean class="com.flower.docs.domain.search.AndClause">
							<!-- Critères masqués -->
							<property name="criteria">
								<list>
									<bean class="com.flower.docs.domain.search.Criterion">
										<property name="name" value="classid" />
										<property name="type">
											<value type="com.flower.docs.domain.search.Types">STRING</value>
										</property>
										<property name="operator">
											<value type="com.flower.docs.domain.search.Operators">EQUALS_TO</value>
										</property>
										<property name="values">
											<list>
												<value>CourrierEntrant</value>
											</list>
										</property>
									</bean>
								</list>
							</property>
						</bean>
					</list>
				</property>
				<!-- Nombre de résultats à afficher -->
				<property name="max" value="42" />
			</bean>
		</property>
		<!-- ... -->
	</bean>

Tri

L’ordre de tri par défaut des résultats se configure à l’aide de la propriété orderClauses sur l’objet SearchRequest. Chaque OrderClause définit un nom de champ et une direction de tri.

<property name="orderClauses">
    <list>
        <bean class="com.flower.docs.domain.search.OrderClause">
            <property name="name" value="creationDate" />
            <property name="ascending" value="false" />
        </bean>
    </list>
</property>

Plusieurs clauses de tri peuvent être combinées. Elles sont appliquées dans l’ordre de déclaration.

Agrégation

Une agrégation regroupe les résultats de recherche par valeurs de champ, en les affichant sous forme d’arborescence. Lorsqu’un bucket est sélectionné, la recherche est filtrée pour correspondre aux critères de ce bucket.

Les agrégations se configurent à l’aide de la propriété aggregation sur l’objet SearchRequest avec un bean FieldAggregation. Les agrégations imbriquées permettent un regroupement multi-niveaux.

<property name="aggregation">
    <bean class="com.flower.docs.domain.search.FieldAggregation">
        <property name="nested">
            <list>
                <bean class="com.flower.docs.domain.search.FieldAggregation">
                    <property name="field" value="TypeCourrier" />
                </bean>
                <bean class="com.flower.docs.domain.search.FieldAggregation">
                    <property name="field" value="CanalEntree" />
                </bean>
            </list>
        </property>
    </bean>
</property>

Colonnes masquées

Pour remonter les valeurs d’un tag via la selectClause sans que la colonne soit visible, utilisez la propriété hiddenColumns sur le ComponentSearchPresenter. Voir Résultats de recherche pour plus de détails.


  • Il est préconisé d’utiliser la notion de requête cachée afin de simplifier l’accès à des composants et non pour sécuriser l’accès à ceux-ci.
  • Ajouter le critère ADD_FILTERS_TO_SELECT avec la valeur true dans les contextes de la requête permet d’afficher les critères renseignés en tant que colonnes.