Lekce 7
Repository použité při lekci
Postup stažení: nejprve si repository forkni z mého repository do svého (tlačítko Fork vpravo nahoře). Následně naklonuješ repository do svého počítače. Pokud máš v prohlížeči nainstalovaný doplněk JetBrains Toolbox, stačí na GitHubu kliknout na tlačítko Clone in IntelliJ IDEA a pokračovat dle pokynů.

Pokud doplněk nemáš, na úvodní obrazovce IntelliJ IDEA zvol tlačítko Get from VCS, následně v nabídce vlevo zvol GitHub a v přehledu projektů vyber projekt, který chceš klonovat.
V repository jsou 3 branche, na GitHubu je možné si je přepínat pro prohlížení v rozbalovacím seznamu – viz tlačítko s nápisem main vlevo na obrázku výše. Branche jsou:
main– výchozí kód, tak jak byl na začátku lekcepostup– branch s kódem, který jsem napsal v průběhu lekcevysledek– branch s „ideálním“ výsledkem – kódem, ke kterému jsme měli dojít na konci lekce, bez různých doplnění na základě dotazů
Osnova
- role Springu v aplikaci
- parametry jako součást URL
Tahák
- anotace
@Autowired,@Service,@Controller - parametry součástí cesty:
GetMapping("/clanek/{id}"),@PathVariable int id
HTML formuláře
<form action="" method="">…</form><input id="" name="" type="" />- povolené hodnoty atributu type
idslouží pro elementlabelnamemusí být shodné s pojmenováním property v Javě
<label for="">…</label><button></button>- další formulářové prvky:
<input id="" name="" type="radio" /><input id="" name="" type="checkbox" /><select name=""><option value=""></option></select>
Thymeleaf šablony
<html lang="cs" xmlns:th="http://www.thymeleaf.org">– hlavička HTML souboru, který funguje jako Thymeleaf šablona;lang="cs"říká, že obsah stránky je v češtině (prohlížeč pak např. nebude nabízet přeložení stránky z angličtiny)${variable}– získání dat z modelu@{/odkaz}– vytvoření internetového odkazu@{/odkaz(param1=${value1}, param2=${value2}}– vytvoření internetového odkazu s parametry
<span th:text="${variable}">…</span>– vložení textu do obsahu HTML elementu<span th:utext="${variable}">…</span>– vložení HTML kódu do obsahu HTML elementu
<span th:if="${variable} == 'value'">…</span>– celý HTML element je vložen jenom v případě, kdy podmínka je splněna<span th:unless="${variable} == 'value'">…</span>– celý HTML element je vložen jenom v případě, kdy podmínka není splněna
<div th:each="item : ${list}">…</div>– celý HTML element je opakován pro každou položku seznamulist, v rámci opakování existuje proměnnáitems aktuální hodnotou ze seznamu<div th:each="item, iterStat : ${list}">…</div>– jako předchozí, ale v proměnnéiterStatjsou navíc informace o procházení seznamu, jsou to:index– pořadí aktuálního prvku, začíná 0count– pořadí aktuálního prvku, začíná 1size– počet prvků v seznamucurrent– aktuální prvek seznamu (item == iterStar.current)- logické proměnné
even,odd,firstalast
${#temporals.format(dateOrTime)}– formátování data, času nebo časové značky (datum+čas) dle výchozího nastavení${#temporals.format(dateOrTime, 'd. M. yyyy H:mm')}– formátování data, času nebo časové značky (datum+čas) dle určeného formátu
- th-atribut
th:field– nastavujename,value,id, případněchecked
Spring
@Controller– třída s metodami, které obsluhují požadavky klienta@SpringBootApplication– označení výchozí třídy Spring Boot aplikace. Spring Boot následně prohledává package, ve kterém je umístěna tato třída, a všechny package pod ním (na libovolné úrovni zanoření) a zpracuje všechny třídy označené některou z anotací, které Spring zná – např.@Controller,@Service,@Repositoyapod.@GetMapping,@PostMappinga další,@RequestMapping– anotace označující celý kontroler nebo metodu a určující, jaké požadavky bude zpracovávat (např. cesta, metoda, typ dat požadavku nebo odpovědi)ModelAndView– přepravka, která obsahuje název view a data modelureturn "redirect:/cil";- anotace
@ModelAttribute,@Valid - anotace
@NotNull,@NotEmpty,@NotBlank,@Min,@Max,@Email, … - anotace
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE) - třída
BindingResult
Java
enum– speciální třída obsahující výčet konstant (např. seznam světových strany nebo ročních období)
Odkazy
- Java SE 11 Javadoc – dokumentace všech tříd, které jsou součástí základní Javy ve verzi 11.
- Dokumentace Spring Boot – odsud je anotace
@SpringBootApplicationa třídaSpringApplication. - Dokumentace Spring Framework – odsud jsou anotace
@Controller,@GetRequesta třídaModelAndView. - Dokumentace Thymeleaf – šablonovací systém pro HTML použitý v projektu.
- Dokumentace Thymeleaf + Spring – rozšíření Thymeleaf pro práci se Springem.
- Dokumentace HTML formulářů
- Dokumentace Hibernate Validator
Úkol
Zadání úkolu: Úkol 6