gpt4 book ai didi

java - 当 pdf 生成失败时,向 portlet 资源响应提供错误页面

转载 作者:行者123 更新时间:2023-12-01 04:52:52 25 4
gpt4 key购买 nike

我有一个资源感知 spring mvc portlet,我用它来提供 PDF。以前,我们从 portlet 提供 PDF 的方法是链接到 servlet 以实际编写 PDF 响应。我们在 servlet 中的模式基本上是这样的:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
OutputStream out = response.getOutputStream();
FileInputStream certIn = null;
try {
certIn = new FileInputStream(pdfFile);
if (certIn.available() > 0) {
while (certIn.available() > 0) {
out.write(certIn.read());
}
out.flush();
}
} catch (IOException e) {
response.reset();
response.setContentType("text/html");
getServletContext().getRequestDispatcher("/WEB-INF/jsp/error.jsp").include(request, response);
} finally {
if (certIn != null) {
try {
certIn.close();
} catch (IOException e) {
LOG.warn(
"Failed to close FileInputStream", e);
}
}
if (out != null) {
try {
out.close();
} catch (IOException e) {
LOG.warn("Failed to close ServletOutputStream", e);
}
}
}
}

我现在正尝试在资源感知 portlet 中复制此内容。我遇到的问题是,如果我们收到错误,我无法将其重定向到错误 jsp。

如果我使用 portletContext.getRequestDispatcher() 转发到 jsp,则会收到一条错误消息,指出我无法在 getOuputStream() 之后调用 getWriter()。如果我尝试将 spring ModelAndView 返回到 error.jsp,我会得到相同的错误。

有人可以建议我在 ResourceResponse 上调用 getOutputStream() 后如何将用户重定向到 jsp 吗?

谢谢。

最佳答案

最后稍微改变了我正在做的事情的顺序。现在,在我知道文件存在并且可读之前,不要调用 getPortletOutputStream()。如果在实际写入输出流时失败,则无法为 jsp 提供服务,但 servlet 也是如此。

关于java - 当 pdf 生成失败时,向 portlet 资源响应提供错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14651882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com