【发布时间】:2018-07-25 11:26:33
【问题描述】:
要求是在点击 REST API 端点时生成 pdf / excel 文档。 即 localhost:8080/download.xlsx -> 生成一个包含 .xlsx 格式数据的文件 localhost:8080/download.pdf -> 生成数据为.pdf格式的文件
Spring Boot 版本 - 2.0.2
由于我使用的是 Spring Boot 相对较新的版本,我必须实现 WebMvcConfigurer 而不是扩展 WebMvcConfigurerAdapter
我正在配置 ContentNegotiatingViewResolver
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer
configurer) {
configurer
.favorPathExtension(true)
.defaultContentType(MediaType.APPLICATION_JSON);
}
@Bean
public ViewResolver contentNegotiatingViewResolver(ContentNegotiationManager
manager) {
ContentNegotiatingViewResolver resolver = new
ContentNegotiatingViewResolver();
resolver.setContentNegotiationManager(manager);
// Define all possible view resolvers
List<ViewResolver> resolvers = new ArrayList<>();
resolvers.add(excelViewResolver());
resolvers.add(pdfViewResolver());
resolver.setViewResolvers(resolvers);
return resolver;
}
@Bean
public ViewResolver excelViewResolver() {
return new ExcelViewResolver();
}
@Bean
public ViewResolver pdfViewResolver() {
return new PdfViewResolver();
}
在我的控制器中:-
@Controller
public class MyController{
@PostMapping(value = "/download", produces = {"application/pdf",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"})
public String downloadData(Model model, @RequestBody
someRequestView requestView) {
getSpringVersion();
model.addAttribute("someResultList",
someService.extractDataForDownload(requestView));
return "";
}
}
我什么都试过了,但是当我点击 localhost:8080/download.pdf -> 它给了我 404 not found。请提出解决此问题的方法。
【问题讨论】:
-
尝试添加
.ignoreAcceptHeader(true)也许您发送了标头并且它需要优先权
标签: spring-boot content-negotiation