首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring-web尝试查找使用通知路径变量命名的资源

Spring-web尝试查找使用通知路径变量命名的资源
EN

Stack Overflow用户
提问于 2016-03-09 04:24:25
回答 2查看 60关注 0票数 0

使用spring-web,我映射了一个方法来接收一个包含点的请求。在路径上:

代码语言:javascript
运行
复制
@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应用程序。

EN

回答 2

Stack Overflow用户

发布于 2016-03-09 04:35:11

您的@RequestMapping说它会生成"application/xls",但是您的返回类型是一个String,并且您还没有用@ResponseBody注释该返回类型。

如果要返回Excel电子表格,则需要在服务器上生成该电子表格,并将其作为请求映射中的byte[]返回。我不确定您如何或为什么返回一个控制器,除非您的String是一个简单的@Controller,并且您返回的是视图名称。

票数 1
EN

Stack Overflow用户

发布于 2016-03-09 05:30:57

您是否尝试过配置您的RequestMappingHandlerMapping

代码语言:javascript
运行
复制
handler.setUseSuffixPatternMatch( false )

(不管怎样,我正在配置我的RequestMappingHandlerMapping,所以对我来说,我只需要添加这一行--您可能会让Spring Boot自动配置那个类)。

请参阅https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerMapping.html#setUseRegisteredSuffixPatternMatch-boolean-

您可能还需要关闭内容协商-我记不清Spring Boot默认内容协商是什么,但它可能会影响您的情况。

代码语言:javascript
运行
复制
@Override public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
    configurer.favorPathExtension(false)
}

值得注意的是,如果您正在使用更广泛的/现有的应用程序,那么这两种配置都可能具有更广泛的影响,所以如果是这样的话,请谨慎行事!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35877311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档