Spring Path Variables with Thymeleaf
1. Introduksjon
I denne korte opplæringen skal vi lære hvordan du bruker Thymeleaf til å lage URL-er ved hjelp av Spring-sti-variabler.
Vi bruker banevariabler når vi vil overføre en verdi som en del av URL-en. I en vårkontroller får vi tilgang til disse verdiene ved hjelp av @PathVariable kommentar.
2. Bruke banevariabler
La oss først sette opp eksemplet vårt ved å lage et enkelt Punkt klasse:
public class Item {private int id; privat strengnavn; // Constructor og standard getters and setters}
La oss nå opprette kontrolleren vår:
@Controller public class PathVariablesController {@GetMapping ("/ pathvars") public String start (Model model) {List items = new ArrayList (); items.add (nytt element (1, "Første element")); items.add (nytt element (2, "Second Item")); model.addAttribute ("items", items); returner "pathvariables / index"; } @GetMapping ("/ pathvars / single / {id}") public String singlePathVariable (@PathVariable ("id") int id, Model model) {if (id == 1) {model.addAttribute ("item", new Artikkel (1, "Første vare")); } annet {model.addAttribute ("item", new Item (2, "Second Item")); } returner "pathvariables / view"; }}
I vår index.html mal, la oss gå gjennom elementene våre og lage lenker som kaller singlePathVariable metode:
Koden vi nettopp opprettet, gjør nettadresser som dette:
// localhost: 8080 / pathvars / single / 1
Dette er standard Thymeleaf-syntaks for bruk av uttrykk i URL-er.
Vi kan også bruke sammenkobling for å oppnå samme resultat:
3. Bruke flere banevariabler
Nå som vi har dekket det grunnleggende om å lage en sti-variabel URL i Thymeleaf, la oss raskt dekke ved hjelp av flere.
Først oppretter vi en Detalj klasse og endre vår Punkt klasse for å ha en liste over dem:
offentlig klasse Detalj {privat int id; privat strengbeskrivelse; // constructor and standard getters and setters}
La oss deretter legge til en liste over Detalj til Punkt:
private Liste detaljer;
La oss nå oppdatere kontrolleren vår for å legge til en metode som bruker flere @PathVariable kommentarer:
@GetMapping ("/ pathvars / item / {itemId} / detail / {dtlId}") public String multiplePathVariable (@PathVariable ("itemId") int itemId, @PathVariable ("dtlId") int dtlId, Model model) {for ( Elementvare: varer) {if (item.getId () == itemId) {model.addAttribute ("item", item); for (Detaljdetaljer: item.getDetails ()) {if (detail.getId () == dtlId) {model.addAttribute ("detalj", detalj); }}}} returner "pathvariables / view"; }
Til slutt, la oss endre vår index.html mal for å lage nettadresser for hver detaljoppføring:
4. Konklusjon
I denne raske opplæringen lærte vi hvordan du bruker Thymeleaf til å lage URL-er med stavariabler. Vi startet med å lage en enkel URL med bare en. Senere utvidet vi eksemplet vårt til å bruke flere banevariabler.
Eksempelkoden er tilgjengelig på GitHub.