Query Parameters
Queryparameters stellen je in staat om extra gegevens via URL's door te geven, met het formaat ?key1=value1&key2=value2
. Terwijl routeparameters worden gebruikt om vereiste gegevens binnen het URL-pad door te geven, bieden queryparameters een flexibele methode voor het doorgeven van optionele of extra gegevens. Ze zijn vooral nuttig bij het filteren van inhoud, sorteren of het verwerken van meerdere waarden voor dezelfde sleutel.
Overzicht van queryparameters
Queryparameters in webforJ volgen de typische URL-conventie: sleutel-waarde paren gescheiden door =
en samengevoegd met &
. Ze worden aan de URL toegevoegd na een ?
en bieden een flexibele manier om optionele gegevens door te geven, zoals filter- of sorteervoorkeuren.
Bijvoorbeeld:
/products?category=electronics&sort=price
Queryparameters ophalen
Queryparameters worden benaderd via het ParametersBag
-object. Om queryparameters op te halen, gebruik je de getQueryParameters()
-methode van het Location
-object.
Hier is hoe je queryparameters uit een URL in een view kunt ophalen:
@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("Categorie: " + category);
console().log("Sorteren: " + sort);
}
}
In dit voorbeeld:
- De
onDidEnter
-methode haalt queryparameters op van hetLocation
-object dat door hetDidEnterEvent
wordt geleverd. - De
ParametersBag
stelt je in staat om specifieke queryparameters op te halen metget()
, wat eenOptional<String>
retourneert. Je kunt een standaardwaarde opgeven metorElse()
als de parameter niet aanwezig is.
ParametersBag
gettersDe ParametersBag
biedt verschillende getter-varianten om te helpen bij het casten van de waarde van queryparameters naar specifieke typen en het filteren ervan. Hieronder staat de volledige lijst van beschikbare getters:
get(String key)
: Haalt de waarde van de parameter op als eenString
.getAlpha(String key)
: Retourneert alleen alfabetische tekens uit de parameterwaarde.getAlnum(String key)
: Retourneert alleen alfanumerieke tekens uit de parameterwaarde.getDigits(String key)
: Retourneert alleen de numerieke cijfers uit de parameterwaarde.getInt(String key)
: Parsen en retourneert de parameterwaarde als eenInteger
.getFloat(String key)
: Parsen en retourneert de parameterwaarde als eenFloat
.getDouble(String key)
: Parsen en retourneert de parameterwaarde als eenDouble
.getBoolean(String key)
: Parsen en retourneert de parameterwaarde als eenBoolean
.
Deze methoden helpen je ervoor te zorgen dat de waarden correct zijn geformatteerd en gecast, waardoor handmatige parsing of validatie overbodig wordt.
Meerdere waarden voor een queryparameter afhandelen
Soms kan een queryparameter meerdere waarden hebben voor dezelfde sleutel, zoals in het volgende voorbeeld:
/products?category=electronics,appliances&sort=price
De ParametersBag
biedt een methode om dit af te handelen door waarden als een lijst op te halen:
@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("Categorieën: " + categories);
console().log("Sorteren: " + sort);
}
}
In dit voorbeeld:
getList("category")
haalt alle waarden op die zijn gekoppeld aan de sleutelcategory
, en retourneert deze als een lijst.
Standaard gebruikt de getList()
-methode een komma (,
) als scheidingsteken. Je kunt het scheidingsteken aanpassen door een ander teken of een reguliere expressie als tweede parameter door te geven aan de getList(String key, String regex)
-methode.
Gebruiksscenario's voor queryparameters
- Inhoud filteren: Queryparameters worden vaak gebruikt om filters toe te passen, zoals categorieën of zoekwoorden.
- Gegevens sorteren: Je kunt sorteervoorkeuren via queryparameters doorgeven, zoals sorteren op prijs, beoordeling of datum.
- Optionele parameters afhandelen: Wanneer je gegevens moet doorgeven die niet deel uitmaken van de vereiste route-structuur, bieden queryparameters flexibiliteit.
- Meerdere waarden doorgeven: Queryparameters stellen je in staat om meerdere waarden voor een enkele sleutel door te geven, wat nuttig is wanneer gebruikers meerdere opties selecteren, zoals productcategorieën of filters.