javax.servlet.http.HttpServletResponse缺少首要或唯一的构造函数

后端代码

@GetMapping("/export")
    public void export(HttpServletResponse response) {
        ExcelUtils.exportTemplate(response, "客户表", Customer.class);
    }

后端报错信息

java.lang.IllegalStateException: No primary or single unique constructor found for interface javax.servlet.http.HttpServletResponse


网上看的都是报错list、request的,

img

使用的是springboot3及以上的版本吗?新版本对HttpServletResponse不能直接使用

【以下回答由 GPT 生成】

这个问题的原因是HttpServletResponse是一个接口,而不是一个具体的实现类,因此无法直接实例化。可以通过使用HttpServletResponseWrapper来解决这个问题。下面是解决方案的代码示例:

@GetMapping("/export")
public void export(HttpServletResponse response) {
    HttpServletResponseWrapper responseWrapper = new HttpServletResponseWrapper(response);
    ExcelUtils.exportTemplate(responseWrapper, "客户表", Customer.class);
}

在这个解决方案中,我们创建了一个HttpServletResponseWrapper对象,并将原始的HttpServletResponse对象作为参数传入。然后,将新创建的HttpServletResponseWrapper对象传递给ExcelUtils.exportTemplate方法。

请注意,这只是一个示例解决方案,具体的解决方案可能取决于你使用的框架或工具。你可能需要根据你自己的情况进行适当的调整。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

HttpServletResponse 是一个接口,而且它没有默认的构造函数
注入 HttpServletResponse 的实现类 HttpServletResponseWrapper

HttpServletResponseWrapper responseWrapper = new HttpServletResponseWrapper(response);
ExcelUtils.exportTemplate(responseWrapper, "客户表", Customer.class);