Ejercicios Spring Boot 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.

Ejercicio Fútbol

Ejercicios Spring Boot con Thymeleaf 1
Ejercicios Spring Boot con Thymeleaf 2
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

Ejercicios Spring Boot con Thymeleaf 3

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

Ejercicios Spring Boot con Thymeleaf 4
Ejercicios Spring Boot con Thymeleaf 5
Ejercicios Spring Boot con Thymeleaf 6
<form action="/libreria/Controller" method="get">
    <table>
        <tr>
            <th>Id</th>
            <th>Título</th>
            <th>Precio</th>
            <th>Opción</th>
        </tr>

        <c:forEach var="libro" items="${requestScope.libros}">
            <tr id="fila${libro.id}">
                <td><input type="text" name="identification" value="${libro.id}" disabled></td>
                <td><input type="text" name="titulo" value="${libro.titulo}"></td>
                <td><input type="text" name="precio" value="${libro.precio}"></td>
                <td>
                    <button type="button" onClick="send('eliminar',${libro.id})">Eliminar</button>
                    <button type="button" onClick="send('modificar' ,${libro.id})">Modificar</button>
                </td>
            </tr>
        </c:forEach>

        <tr>
            <td style="background-color: gray;"></td>
            <td><input type="text" name="tituloAlta"></td>
            <td><input type="text" name="precioAlta"></td>
            <td><button>Agregar</button></td>
        </tr>
    </table>
    <input type="hidden" name="action" value="alta">
    <input type="hidden" name="titulo2">
    <input type="hidden" name="precio2"> <input type="hidden" name="idNumber">
</form>

<script>
    const send = (action, id) => {
        const fila = document.querySelector('#fila' + id);

        const titulo = fila.querySelector('[name=titulo]').value;
        const precio = fila.querySelector('[name=precio]').value;
        document.querySelector('[name=action]').value = action;
        document.querySelector('[name=titulo2]').value = titulo;
        document.querySelector('[name=precio2]').value = precio;
        document.querySelector('[name=idNumber]').value = id;
        document.querySelector("form").submit();
    }
</script>

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

← Insertar registro con Spring Boot
Petición Rest →