Spring Path-variabelen met Thymeleaf

1. Inleiding

In deze korte tutorial gaan we leren hoe we Thymeleaf kunnen gebruiken om URL's te maken met Spring path-variabelen.

We gebruiken padvariabelen als we een waarde willen doorgeven als onderdeel van de URL. In een Spring-controller hebben we toegang tot deze waarden met behulp van de @PathVariable annotatie.

2. Padvariabelen gebruiken

Laten we eerst ons voorbeeld opzetten door een simple Item klasse:

openbare klasse Item {privé int id; private String naam; // Constructeur en standaard getters en setters}

Laten we nu onze controller maken:

@Controller openbare klasse PathVariablesController {@GetMapping ("/ pathvars") openbare String start (Modelmodel) {Lijstitems = nieuwe ArrayList (); items.add (nieuw item (1, "Eerste item")); items.add (nieuw item (2, "Tweede item")); model.addAttribute ("items", items); retourneer "pathvariables / index"; } @GetMapping ("/ pathvars / single / {id}") public String singlePathVariable (@PathVariable ("id") int id, modelmodel) {if (id == 1) {model.addAttribute ("item", nieuw Item (1, "Eerste item")); } else {model.addAttribute ("item", new Item (2, "Second Item")); } retourneer "pathvariables / view"; }}

In onze index.html sjabloon, laten we onze items doorlopen en koppelingen maken die de singlePathVariable methode:

De code die we zojuist hebben gemaakt, maakt URL's als volgt:

// localhost: 8080 / pathvars / single / 1

Dit is de standaard Thymeleaf-syntaxis voor het gebruik van expressies in URL's.

We kunnen ook aaneenschakeling gebruiken om hetzelfde resultaat te bereiken:

3. Meerdere padvariabelen gebruiken

Nu we de basisprincipes hebben besproken van het maken van een padvariabele URL in Thymeleaf, laten we het snel bespreken met meerdere.

Eerst maken we een Detail class en wijzig onze Item klas om een ​​lijst van hen te hebben:

openbare klasse Detail {privé int id; private String beschrijving; // constructor en standaard getters en setters}

Laten we vervolgens een lijst toevoegen met Detail naar Item:

privélijst details;

Laten we nu onze controller updaten om een ​​methode toe te voegen met behulp van meerdere @PathVariable annotaties:

@GetMapping ("/ pathvars / item / {itemId} / detail / {dtlId}") public String multiplePathVariable (@PathVariable ("itemId") int itemId, @PathVariable ("dtlId") int dtlId, Model model) {voor ( Item item: items) {if (item.getId () == itemId) {model.addAttribute ("item", item); voor (Detail detail: item.getDetails ()) {if (detail.getId () == dtlId) {model.addAttribute ("detail", detail); }}}} retourneer "pathvariables / view"; }

Laten we tot slot onze index.html sjabloon om URL's voor elk detailrecord te maken:

4. Conclusie

In deze korte tutorial hebben we geleerd hoe we Thymeleaf kunnen gebruiken om URL's met padvariabelen te maken. We zijn begonnen met het maken van een eenvoudige URL met slechts één URL. Later hebben we ons voorbeeld uitgebreid om meerdere padvariabelen te gebruiken.

De voorbeeldcode is beschikbaar op GitHub.