Java spring thymeleaf静态内容HTTP 405
我正在使用spring boot和thymeleaf,并尝试从应用程序中获取映像Java spring thymeleaf静态内容HTTP 405,java,spring,spring-mvc,gradle,thymeleaf,Java,Spring,Spring Mvc,Gradle,Thymeleaf,我正在使用spring boot和thymeleaf,并尝试从应用程序中获取映像 <img th:src="@{/static/img/png-test.png}"/> 这似乎是可行的,因为在启动时,我收到以下消息 2017-08-04 20:16:02.926 INFO 15234 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/static/**] on
<img th:src="@{/static/img/png-test.png}"/>
这似乎是可行的,因为在启动时,我收到以下消息
2017-08-04 20:16:02.926 INFO 15234 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/static/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
但是浏览器中没有显示图像。相反,我在浏览器控制台中得到以下错误
GET http://localhost:8080/static/img/png-test.png 405 ()
Spring记录了以下内容
2017-08-04 19:59:20.265 WARN 14705 --- [nio-8080-exec-5] o.s.web.servlet.PageNotFound : Request method 'GET' not supported
编辑:
我把这个添加到我的build.gradle
文件中可能是个问题吗
jar {
from('src/main/') {
include 'static/'
}
}
因为否则gradle永远不会把静态文件夹放入jar
编辑:
我找到了重现失败的方法
我的控制器中有一个函数,看起来像这样
@RequestMapping(name = "/", method = RequestMethod.POST)
public String func(@RequestParam(name = "var1") String var1, @RequestParam(name = "var2") String var2){
return "templatename";
}
当我取消对函数的注释时,我能够接收静态内容。
至少“不允许的方法”现在有意义了。因为它在等一个帖子
那么,我如何在不重新映射函数的情况下修复此问题 默认情况下,Spring Boot将从
您的应用程序目录/srce/main/resources/static
或您的应用程序目录/srce/main/resources/public
提供静态资源。如果您将静态资源放在其他地方,请将静态资源移动到这些目录中的一个目录中,这样您就可以离开了。我刚刚注意到我很愚蠢。
我写
@RequestMapping(name=“/”,method=RequestMethod.POST)
而不是
@RequestMapping(value=“/”,method=RequestMethod.POST)
在我的控制器中的一个函数上。它将此函数映射到/**
,因此我对任何静态内容的请求都被路由到此函数,该函数只接受POST
方法
但是对@Kirby来说仍然是一个很大的thnx,不需要创建自定义资源处理程序,因为springbootmvc默认提供静态资源。在主应用程序类上有哪些注释?某些注释禁用静态资源的自动配置。Spring团队可能会提供一些有用的信息。我的主要应用程序类有
@SpringBootApplication
和@ComponentScan
anotationI无法解决gradle问题,因为我只使用maven。为了清楚起见,您正在将静态文件放入目录您的\u app\u文件夹/src/main/resources/static
,对吗?我尝试过,但这导致了相同的错误。因此,我将其放入src/main/static
您的application.properties文件是否有server.servlet路径设置?application.properties中是否定义了任何thymeleaf属性?如果有的话,请把它们寄出去。我怀疑我们忽略了一些显而易见的事情。事实上,也请发布任何配置类。我知道应该是这样的。但它会导致同样的错误。您使用的是Spring安全性吗?如果是,它是如何建立的?我这样问是因为HTTP状态码405“Method not allowed”听起来更像是一个特权问题,而不是Spring找不到静态资源的情况。不,我没有使用Spring安全性。如果您的图像位于your_app/src/main/resources/static/img/png test.png
,img标记中的路径应该是src=“/img/png test.png”
。是否有任何类具有@EnableWebMvc注释?如果是这样,请删除它:注释会禁用Spring Boot的某些自动配置行为,如前所述。感谢您的帮助。这听起来像个笑话,但在我的项目中,一个“名称”而不是“值”的错误在某种程度上禁用了静态资源映射。
jar {
from('src/main/') {
include 'static/'
}
}
@RequestMapping(name = "/", method = RequestMethod.POST)
public String func(@RequestParam(name = "var1") String var1, @RequestParam(name = "var2") String var2){
return "templatename";
}