Curso de Spring Boot | Ejercicios con Thymeleaf

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

Ejercicio Invitados

Hacer una página web para una lista de invitados con 4 secciones. Una para consultar los invitados, otra para dar de alta un nuevo invitado y otra para darlo de baja.La tabla que usaremos tendrá dos campos: nombre (VARCHAR) e ID (INT, AUTOINCREMENT, PK).

Cada uno de los siguientes pantallazos representa una página diferente.

Curso de Spring Boot | Ejercicios con Thymeleaf 1
Curso de Spring Boot | Ejercicios con Thymeleaf 2
Curso de Spring Boot | Ejercicios con Thymeleaf 3
Curso de Spring Boot | Ejercicios con Thymeleaf 4

Ejercicio Fútbol

Curso de Spring Boot | Ejercicios con Thymeleaf 5
Curso de Spring Boot | Ejercicios con Thymeleaf 6
Necesitaremos añadir este código al repository
@Query("SELECT e FROM Equipo e WHERE e.equipo_cod=:id")
Equipo findEquipoByEquipoCod(@Param("id")int id);

Ejercicio hospital

Curso de Spring Boot | Ejercicios con Thymeleaf 7

Para evitar que en spring la fecha se guarde correctamente sin poner un día de menos:

SimpleDateFormar fADate = new SimpleDateFormat("yyyy-MM-dd");
fADate.setTimeZone(TimeZone.getTimeZone("PST"));

Ejercicio listado libros

Curso de Spring Boot | Ejercicios con Thymeleaf 8
Curso de Spring Boot | Ejercicios con Thymeleaf 9
Curso de Spring Boot | Ejercicios con Thymeleaf 10
<!DOCTYPE html>
<html>

<head>
 <meta charset="UTF-8">
 <title>Insert title here</title>
 <style>
  .migrid {
   display: grid;
   grid-template-columns: repeat(5, 150px);
  }

  .migridWrapper {
   display: grid;
   grid-template-columns: 600px 100px;
  }

  button {
   display: block;
   width: 100%
  }
 </style>
</head>
<body>
 <div th:each="libro:${libros}" class="migridWrapper">
  <form class="migrid" action="/modificarlibro">
   <div th:text="${libro.id}"></div><input type="hidden" name="idNumber" th:value="${libro.id}" />
   <input type="text" name="titulo" th:value="${libro.titulo}" />
   <input type="text" name="precio" th:value="${libro.precio}" />
   <button>Modificar</button><input type="hidden" name="action" value="modificar" />
  </form>
  <form action="/deletelibro">
   <button>Borrar</button>
   <input type="hidden" name="idNumber" th:value="${libro.id}" />
   <input type="hidden" name="action" value="baja" />
  </form>
 </div>

 <form class="migrid" action="/create-libro">
  <div></div>
  <input id="action" type="hidden" name="action" value="alta">
  <input type="text" name="titulo" placeholder="Título del libro">
  <input type="text" name="precio" placeholder="Precio del libro">
  <button>Alta</button>
 </form>
</body>
</html>

Ejercicio mensajería

Para acceder a la sesión desde el controlador:
@RequestMapping(path = "/createMensajes", method = RequestMethod.GET)
public ModelAndView createMensaje(@ModelAttribute("mensaje")String mensaje,@ModelAttribute("ids[]")String ids[],HttpServletRequest request,ModelMap model) {
 HttpSession session = request.getSession();

Enviar y recoger un array de datos al servidor utilizando Spring Boot

<c:forEach var="usuario" items="${usuarios}"  varStatus="status">
 <li><input name="ids[${status.index}]" type="checkbox" value="${usuario.id}">
 <c:out value="${usuario.nombre}" /></li>
</c:forEach>
Arrays.stream(mensaje.getIds()).filter(id -> id!=null).forEach(id->{
 //El código que procesa la petición
});
@Entity
public class Mensaje {
 ...
 @Transient
 Integer ids[];
request.getParameterValues("ids")

Recoger un array de datos del servidor utilizando SpringBoot

También hubiera sido posible recoger los datos dándoles a todas las checkboxes el mismo name y utilizando en el controlador el método:

Ejercicio Foro

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.