<dependency>
<groupId>org.linkki-framework</groupId>
<artifactId>linkki-f10-search</artifactId>
</dependency>
Suche
Das Modul linkki-f10-search
stellt Suchkomponenten zur Verfügung, die alle Produkte für die primäre Suche nutzen können.
Die Suche lässt sich auf zwei verschiedene Arten einbinden:
-
Als eigene Seite (auch kontextfrei genannt)
-
Innerhalb einer anderen Seite (auch kontextabhängig genannt)
Benötigte Klassen
Unabhängig von der Art der Suche werden einige Klassen benötigt, die selbst erstellt werden müssen.
Suchparameter |
Ein Modellobjekt für Suchparameter SampleSearchParameters
|
PMO für Suchparameter |
PMO für das Suchparameter-Modellobjekt um die Eingabe von Suchparameter zu ermöglichen SampleSearchParametersPmo
Wenn das erste UI Element mit |
Gesammelte Suchergebnisse |
Wrapper für eine Liste von einzelnen Suchergebnissen. Es muss möglich sein, aus den gesammelten Suchergebnissen eine SampleSearchResult
|
Einzelnes Suchergebnis |
Modellobjekt für ein einzelnes Suchergebnis SampleModelObject
|
PMO für ein einzelnes Suchergebnis |
PMO für die Anzeige des Suchergebnis als Zeile in der Ergebnistabelle SampleSearchResultRowPmo
Für das RowPmo kann die UI Annotation |
SearchController
Der SearchController
ist zuständig für das Ausführen der Suche. Je nach Suchtyp (kontextfrei, kontextabhängig) unterscheidet sich die Implementierung und die Verwendung. Mehr Details hierzu befinden sich auf der entsprechenden Unterseite für die kontextfreien Suche bzw. für die kontextabhängigen Suche.
Erstellen der Suchkomponente
Für die Suchkomponente wird ein SearchLayoutPmo
verwendet, das mit dem SearchLayoutBuilder
erzeugt wird.
SearchLayoutBuilder<PARAM, RESULT, MODELOBJECT, ROW>
return SearchLayoutBuilder
.<SampleSearchParameters, SampleSearchResult, SampleModelObject, SampleSearchResultRowPmo> with()
.searchParametersPmo(SampleSearchParametersPmo::new)
.searchResultRowPmo(m -> new SampleSearchResultRowPmo(m, getAdditionalActions(m)),
SampleSearchResultRowPmo::getModelObject,
SampleSearchResultRowPmo.class)
.searchController(searchController, SampleSearchResult::getResult)
.primaryAction(showObject)
.maxResult(SampleSearchResult.DEFAULT_MAX_RESULT_SIZE)
.build();
Die "primary action" wird beim Doppelklick auf eine Ergebniszeile ausgeführt. Bei einer kontextfreien Suche ist es üblich den Eintrag auf einer neuen Seite zu öffnen, bei einer kontextabhängigen Suche wird der Eintrag ausgewählt.