springboot 整合 jasperreport 问题

新手上路,请多包涵

网上资料也不多,问题比较困扰
config:

@Configuration
@EnableWebMvc
public class JasperConfig extends WebMvcConfigurerAdapter {
    @Override
    public void configureDefaultServletHandling(final DefaultServletHandlerConfigurer configurer) {

        configurer.enable();
    }

    @Bean
    public JasperReportsViewResolver getJasperReportsViewResolver() {

        JasperReportsViewResolver resolver = new JasperReportsViewResolver();
        resolver.setPrefix("classpath:templates/");
        resolver.setSuffix(".jrxml");

        resolver.setReportDataKey("datasource");
        resolver.setViewNames("*tb*");//jrxml模板名
        resolver.setViewClass(JasperReportsMultiFormatView.class);
        resolver.setOrder(0);
        return resolver;
    }
  }

controller:

@Controller
@RequestMapping(value = "/reports")
public class UserController {

    private static final String REPORT_NAME = "reportName";
    private static final String FILE_FORMAT = "format";
    private static final String DATASOURCE = "datasource";

    @GetMapping("/{reportName}")
    @ResponseBody
    public ModelAndView getReportByParam(final ModelMap modelMap,
                                         @PathVariable(REPORT_NAME) final String reportName,
                                         @RequestParam(FILE_FORMAT) final String format) {
        JRDataSource dbSource = new JRBeanCollectionDataSource(Name.getList());
//    数据源没有自动注入,自己写了实体类模拟查询,数据源应该没有问题
        modelMap.put(DATASOURCE, dbSource);
        modelMap.put(FILE_FORMAT, format);
        ModelAndView modelAndView = new ModelAndView(reportName, modelMap);
        return modelAndView;
    }

最终的报错:
图片描述

PDF应该是Format里写好的属性 ,为什么会读不到,跪求解答

阅读 5.7k
1 个回答
新手上路,请多包涵

format值小写,format=pdf
源码里:

  /**
   * Creates a new {@code JasperReportsMultiFormatView} instance
   * with a default set of mappings.
   */
    public JasperReportsMultiFormatView() {
        this.formatMappings = new HashMap<String, Class<? extends AbstractJasperReportsView>>(4);
        this.formatMappings.put("csv", JasperReportsCsvView.class);
        this.formatMappings.put("html", JasperReportsHtmlView.class);
        this.formatMappings.put("pdf", JasperReportsPdfView.class);
        this.formatMappings.put("xls", JasperReportsXlsView.class);
        this.formatMappings.put("xlsx", JasperReportsXlsxView.class);
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题