Query Parameters
Abfrageparameter ermöglichen es Ihnen, zusätzliche Daten über URLs zu übermitteln, und zwar im Format ?key1=value1&key2=value2
. Während Routenparameter verwendet werden, um erforderliche Daten innerhalb des URL-Pfads zu übermitteln, bieten Abfrageparameter einen flexiblen Mechanismus zum Übermitteln von optionalen oder zusätzlichen Daten. Sie sind besonders nützlich beim Filtern von Inhalten, Sortieren oder Verarbeiten mehrerer Werte für denselben Schlüssel.
Übersicht über Abfrageparameter
Abfrageparameter in webforJ folgen der typischen URL-Konvention: Schlüssel-Wert-Paare, die durch =
getrennt und mit &
verknüpft sind. Sie werden an die URL nach einem ?
angehängt und bieten eine flexible Möglichkeit, optionale Daten wie Filter- oder Sortierpräferenzen zu übermitteln.
Zum Beispiel:
/products?category=electronics&sort=price
Abfrageparameter abrufen
Abfrageparameter werden über das Objekt ParametersBag
zugegriffen. Um Abfrageparameter abzurufen, verwenden Sie die Methode getQueryParameters()
des Location
-Objekts.
So können Sie Abfrageparameter aus einer URL in einer Ansicht abrufen:
@Route(value = "products")
public class ProductView extends Composite<Div> implements DidEnterObserver {
@Override
public void onDidEnter(DidEnterEvent event, ParametersBag parameters) {
ParametersBag queryParameters = event.getLocation().getQueryParameters();
String category = queryParameters.get("category").orElse("all");
String sort = queryParameters.get("sort").orElse("default");
console().log("Kategorie: " + category);
console().log("Sortierung: " + sort);
}
}
In diesem Beispiel:
- Die Methode
onDidEnter
ruft Abfrageparameter aus demLocation
-Objekt ab, das vomDidEnterEvent
bereitgestellt wird. - Das
ParametersBag
ermöglicht es Ihnen, bestimmte Abfrageparameter mitget()
abzurufen, was einOptional<String>
zurückgibt. Sie können einen Standardwert mitorElse()
angeben, wenn der Parameter nicht vorhanden ist.
ParametersBag
-GetterDas ParametersBag
bietet mehrere Getter-Varianten, um den Wert von Abfrageparametern in spezifische Typen zu casten und zu filtern. Die folgende Liste enthält alle verfügbaren Getter:
get(String key)
: Ruft den Wert des Parameters alsString
ab.getAlpha(String key)
: Gibt nur alphabetische Zeichen aus dem Parameterwert zurück.getAlnum(String key)
: Gibt nur alphanumerische Zeichen aus dem Parameterwert zurück.getDigits(String key)
: Gibt nur die numerischen Ziffern aus dem Parameterwert zurück.getInt(String key)
: Analysiert und gibt den Parameterwert alsInteger
zurück.getFloat(String key)
: Analysiert und gibt den Parameterwert alsFloat
zurück.getDouble(String key)
: Analysiert und gibt den Parameterwert alsDouble
zurück.getBoolean(String key)
: Analysiert und gibt den Parameterwert alsBoolean
zurück.
Diese Methoden helfen Ihnen sicherzustellen, dass die Werte korrekt formatiert und gecastet werden, um manuelle Analysen oder Validierungen zu vermeiden.
Umgang mit mehreren Werten für einen Abfrageparameter
Manchmal kann ein Abfrageparameter mehrere Werte für denselben Schlüssel haben, wie im folgenden Beispiel:
/products?category=electronics,appliances&sort=price
Das ParametersBag
bietet eine Methode, um dies zu handhaben, indem Werte als Liste abgerufen werden:
@Route(value = "products")
public class ProductView extends Composite<Div> implements DidEnterObserver {
@Override
public void onDidEnter(DidEnterEvent event, ParametersBag parameters) {
ParametersBag queryParameters = event.getLocation().getQueryParameters();
List<String> categories = queryParameters.getList("category").orElse(List.of("all"));
String sort = queryParameters.get("sort").orElse("default");
console().log("Kategorien: " + categories);
console().log("Sortierung: " + sort);
}
}
In diesem Beispiel:
getList("category")
ruft alle Werte ab, die mit dem Schlüsselcategory
verknüpft sind, und gibt sie als Liste zurück.
Standardmäßig verwendet die Methode getList()
ein Komma (,
) als Trenner. Sie können den Trenner anpassen, indem Sie ein anderes Zeichen oder einen regulären Ausdruck als zweiten Parameter an die Methode getList(String key, String regex)
übergeben.
Anwendungsfälle für Abfrageparameter
- Inhalte filtern: Abfrageparameter werden häufig verwendet, um Filter anzuwenden, wie Kategorien oder Suchbegriffe.
- Daten sortieren: Sie können Sortierpräferenzen über Abfrageparameter übermitteln, zum Beispiel nach Preis, Bewertung oder Datum.
- Optionale Parameter behandeln: Wenn Sie Daten übermitteln müssen, die nicht Teil der erforderlichen Routenstruktur sind, bieten Abfrageparameter Flexibilität.
- Mehrere Werte übermitteln: Abfrageparameter ermöglichen es Ihnen, mehrere Werte für einen einzelnen Schlüssel zu übermitteln, was nützlich ist, wenn Benutzer mehrere Optionen auswählen, wie Produktkategorien oder Filter.