enrique-j
12/27/2017 - 6:06 PM

Thymeleaf.

https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

Primero, necesitamos agregar la dependencia spring-boot-starter-thymeleaf a nuestro pom.xml : https://springframework.guru/spring-boot-web-application-part-2-using-thymeleaf/

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-thymeleaf</artifactId> 
</dependency>

Eso habilita Thymeleaf por defecto; no es necesaria ninguna configuración adicional.

Ahora podemos configurarlo en nuestra application.properties :

spring.thymeleaf.cache=false
spring.thymeleaf.enabled=true
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
 
spring.application.name=Bootstrap Spring Boot

A continuación, definiremos un controlador simple y una página de inicio básica, con un mensaje de bienvenida:

@Controller
public class SimpleController {
    @Value("${spring.application.name}")
    String appName;
 
    @GetMapping("/")
    public String homePage(Model model) {
        model.addAttribute("appName", appName);
        return "home";
    }
}

Finalmente, aquí está nuestro home.html :

<html>
<head><title>Home Page</title></head>
<body>
<h1>Hello !</h1>
<p>Welcome to <span th:text="${appName}">Our App</span></p>
</body>
</html>

formas de rendizar templaates

primera forma solo si quieres renderizar la vista sin pasar objeto a la vista

 @GetMapping("/example")
   public String homePage() {
       return "home";
   }
segunda forma
 para retornar con modelos o datos
 
 ```
 @GetMapping("/example")
public ModelAndV homePage() {
    return new ModelAndV( "home");
}
```

Insertando datos simples en las plantillas

<span th:text="${name}"></span

-----controlador

 @GetMapping("/example")
   public String homePage(Model model) {
   //nombre de la variable despues el valor que se quiere insertar
   model.addAttribute("name","valor Jon");
       return "home";
   }
segunda forma
 para retornar con modelos o datos
 
 ```
 @GetMapping("/example")
public ModelAndV homePage() {
//en el contructor el nombre de la plantilla
 ModelAndV mov = new  ModelAndV("home");
 //nombre de la variable despues el valor que se quiere insertar
 mov.addObject("name","valor Jon");
    return mov;
}
```

insertando datos complejos

--controlador

 @GetMapping("/example")
   public String homePage(Model model) {
   //nombre de mapear despues el valor que se quiere insertar
   model.addAttribute("person",new Person("enrique",23));
       return "home";
   }
segunda forma
 para retornar con modelos o datos
 
 ```
 @GetMapping("/example")
public ModelAndV homePage() {
//en el contructor el nombre de la plantilla
 ModelAndV mov = new  ModelAndV("home");
 
 //nombre de la variable despues el valor que se quiere insertar
 mov.addObject("person",new Person("enrique",23));
 
    return mov;
}
```

---template

<span th:text="${person.name}"></span>

Listado

----controlador

 @GetMapping("/example")
   public String homePage(Model model) {
   //metodo que retorna una ista de persona
   model.addAttribute("person",getPerson());
       return "home";
   }
segunda forma
 para retornar con modelos o datos
 
 ```
 @GetMapping("/example")
public ModelAndV homePage() {
//en el contructor el nombre de la plantilla
 ModelAndV mov = new  ModelAndV("home");
 
 //nombre de la variable despues el valor que se quiere insertar
 mov.addObject("person", getPerson());
 
    return mov;
}
```

----template

<table>
  <thead>
    <tr>
      <th> nombre </th>
      <th>edad  </th>
    </tr>
  </thead>
   <tbody th:each="person :${people}">
     <tr>
      <th th:text="${person.name}"> </th>
      <th th:text="${person.edad}"></th>
    </tr>
   </tbody>
</table>

Corregir errores en la renderización de una plantilla Thymeleaf:

Antes de continuar con las clases, quiero que sepas identificar y corregir los errores que pueden surgirte cuando intentamos mostrar una vista en el navegador, para ello:

Crea un controlador llamado "Example4Controller". Crea un método simple en el que sólo devuelva una vista. Primero devuelve la página 404.html que encontrarás en la carpeta "templates". Arranca el servidor, llama al path indicado y observa la traza de error en la consola. Corrígelo y vuelve a intentarlo hasta que se visualice correctamente. Repite esto mismo para la página 500.html que encontrarás en la misma carpeta. Ignora el fallo que hace no mostrarse la vista, lo corregiremos juntos en la próxima clase.

Es importante que aprendas a leer y entender el log... Thymeleaf destaca por facilitarnos mucha información de los errores.

¿Lo has conseguido? Pues pasa a la siguiente clase.

Si no lo consigues, recuerda que me tienes a tu disposición para cualquier duda.

Be Ninja :)