Quiero hacer una página usando thymeleaf . Pero tengo un problema con los archivos estáticos. Investigué las preguntas ( 1 , 2 , 3 ) con un problema similar, pero no me ayudó.
Uso el marco Spring Boot en la aplicación. Mis archivos se ven como: 
prueba.html
<html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <script src="js/test.js" th:src="@{/test.js}"/> </head> <body> <button onclick="testFunction('test value')">Button</button> </body> </html>prueba.js
function testFunction(test) { console.log(test); }Clase de configuración
@Configuration @EnableWebMvc public class WebMvcConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**").addResourceLocations("classpath:/static/js/"); super.addResourceHandlers(registry); } } Y problema, cuando cargo el archivo test.html con javascript no cargado.
@GetMapping(value = "web/test") public String getTestHtmlPage() { return "test"; } /api/v1 es una configuración en application.properties => server.servlet-path=/api/v1
¿Qué hago mal? ¿Me puedes ayudar?
¡Gracias a todos!
Para comprender mejor el registry.addResourceHandler("/**").addResourceLocations("classpath:/static/js/");
Escribí una respuesta más completa aquí que analiza las asignaciones de ubicación de recursos no válidas. No recibió votos a favor, así que espero que no sea terrible. :-)
En resumen, con la forma en que está mapeando classpath:/static/js/ , y luego accediendo a /js/test.js , le está diciendo a Spring que busque en /static/js/js/test.js .
Lo que probablemente quieras es classpath:/static/ . En ese caso, cuando intenta acceder a /js/test.js , busca el archivo en /static/js/test.js .
En cuanto a Thymeleaf, nunca lo he usado, pero los documentos indican que debe cargar scripts con th:src en lugar de th:href . th:href parece ser solo para contenido HTML.