Integración de
Spring MVC y Spring Data JPA
Configurar directorios de recursos estáticos adicionales
Por defecto en un proyecto de Spring Boot con Thymeleaf los recursos estáticos (css,
javascript, images) están configurados en el directorio:
src/main/resources/static
¿Qué pasa si necesitamos mapear recursos estáticos de otros directorios adicionales?
@Configuration
public class WebConfig implements WebMvcConfigurer{
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//[Link]("/logos/**").addResourceLocations("file:/empleos/img-vacantes/"); // Linux
[Link]("/logos/**").addResourceLocations("fil[Link]/empleos/img-vacantes/"); // Windows
}
}
Mapping URL Obligatorio el prefijo file:
Si tenemos por ejemplo la imagen “[Link]” en el
directorio c:/empleos/img-vacantes/ podríamos
llamar la imagen con la siguiente URL:
[Link]
Integración de paginación
El método findAll, esta sobrecargado con un parámetro de tipo Pageable. Ejemplo:
Clase de servicio
@Override
public Page<Vacante> buscarTodas(Pageable page) {
return [Link](page);
}
Controller
@GetMapping(value = "/indexPaginate")
public String mostrarIndexPaginado(Model model, Pageable page) {
Page<Vacante> lista = [Link](page);
[Link]("vacantes", lista);
return "vacantes/listVacantes";
}
Vista (links de paginación)
<table> . . . </table>
<nav th:if="${[Link] > 0}" aria-label="Page navigation example" >
<ul class="pagination">
<li class="page-item"><a th:href="@{/vacantes/indexPaginate(page=${[Link] - 1})}" class="page-link">Anterior</a></li>
<li class="page-item"><a th:href="@{/vacantes/indexPaginate(page=${[Link] + 1})}" class="page-link">Siguiente</a></li>
</ul>
</nav>
Propiedad para especificar el tamaño de la página ([Link])
[Link]-page-size=5
Resultado Final – Listado de Vacantes con paginación
NOTA: No olvides actualizar el link del menú ([Link]) para acceder al listado de vacantes. Ahora en el link debería ser:
<a class="nav-link" th:href="@{/vacantes/indexPaginate}">Vacantes</a>