使用spring-web,我映射了一个方法来接收一个包含点的请求。在路径上:
@RequestMapping(value = "download/{id:.+}", method = RequestMethod.GET, produces = "application/xls")
public String download(@PathVariable(value = "id") String id) { ... }例如,/download/file.xls应为有效地址。但是当我尝试访问这个地址时,Spring返回Could not find acceptable representation,就好像它正在尝试查找一个名为file.xls的资源一样。
Spring不应该执行download方法,而不是尝试查找名为path变量的资源?
Obs:我的应用程序是一个spring-boot应用程序。
发布于 2016-03-09 04:35:11
您的@RequestMapping说它会生成"application/xls",但是您的返回类型是一个String,并且您还没有用@ResponseBody注释该返回类型。
如果要返回Excel电子表格,则需要在服务器上生成该电子表格,并将其作为请求映射中的byte[]返回。我不确定您如何或为什么返回一个控制器,除非您的String是一个简单的@Controller,并且您返回的是视图名称。
发布于 2016-03-09 05:30:57
您是否尝试过配置您的RequestMappingHandlerMapping
handler.setUseSuffixPatternMatch( false )(不管怎样,我正在配置我的RequestMappingHandlerMapping,所以对我来说,我只需要添加这一行--您可能会让Spring Boot自动配置那个类)。
您可能还需要关闭内容协商-我记不清Spring Boot默认内容协商是什么,但它可能会影响您的情况。
@Override public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.favorPathExtension(false)
}值得注意的是,如果您正在使用更广泛的/现有的应用程序,那么这两种配置都可能具有更广泛的影响,所以如果是这样的话,请谨慎行事!
https://stackoverflow.com/questions/35877311
复制相似问题