Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring thymeleaf静态内容HTTP 405_Java_Spring_Spring Mvc_Gradle_Thymeleaf - Fatal编程技术网

Java spring thymeleaf静态内容HTTP 405

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

我正在使用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/**] 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";
}