1Welche View Patterns gibt es?
1) Template View Pattern
2) Composite View Pattern
2Thymeleaf
Templating Engine, die vollständig in Spring implementiert ist
3Natural templating
Templates sehen aus wie html, enthalten Dummy Inhalte
4\$ {...}
Variable expression z.B.
<form th:object="\${objekt, welches im Formular mitgegeben wird }"
5*{...}
Selection expression
in parent objekt definieren mit th:object, danach in children einzelne Teile des Objekts ausgeben. zB.

6#{...}
Message (i18n) expressions
7@{...}
Link/Url Expressions
8~{...}
Fragment expressions
10th:fragment
erstellt wiederverwendbares Fragment, zB header, Footer, content etc
11th:replace
Wird mit einem Fragment ersetzt
<p th:replace="\${key}">
12Template View Pattern
Platzhalter werden zur Laufzeit durch Helper Functions durch Inhalte ersetzt (einzelne Views mit Thymeleaf)

13Composite View Pattern
Layouting, Eine View enthält weitere Subviews. So können zB Header/Footer umgesetzt werden

14Namespace in Thymeleaf definieren
<html xmlns:th="http://www.thymeleaf.org">
15Redirect in handler Methode
return "redirect:url"
16Include Style Layout, was ist das plus vor-&nachteile
- Jede View schliesst Subview mit ein
- einfach
- ungeeignet für grosse Apps
17Hierarchical Style Layout
Modulare Design mit Layout/Decorator und Fragmenten
komplex, aber sehr sauber
18Layout erstellen
<html th:fragment="maincontent(content)" >
<head>
<body>
<div th:replace="~{header :: header}">Fake Header</div>
<div th:replace="\${content}">Fake content</div>
20Layout Fragment erstellen
<div th:fragment="header" class="header">
<div class="jumbotron">
<h1>Flashcard Client with SpringMVC</h1>
</div>
</div>
21Content View erstellen
th:replace="~{layout :: maincontent(~{::section})}" in <html>
damit wird dann die Section mit th:fragment="content" als content eingesetzt