gpt4 book ai didi

java - 如何使 ResourceResponse 将请求转发到 liferay portlet 中的错误页面

转载 作者:搜寻专家 更新时间:2023-11-01 03:53:19 25 4
gpt4 key购买 nike

当生成 Excel 工作表时发生错误时,我试图将我的请求转发到错误页面。下面是示例代码。我不确定为什么在抛出异常时它没有被转发到错误页面,它显示空白页面但肯定不会转到我的错误页面。`

        @ResourceMapping("xyz")
public void generateExcelExport(ResourceRequest request, ResourceResponse response) {
try {
//Do all the excel related logic
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setProperty("Content-Disposition", "attachment; filename=\"" + XYZ + "\"");
workbook.write(response.getPortletOutputStream());
} catch (Exception e) {
response.setProperty("Content-Disposition", "inline" );
response.setContentType("text/html");
PortletRequestDispatcher dispatcher = request.getPortletSession().getPortletContext().getRequestDispatcher("/WEB-INF/views/html/jsp/error.jsp");
try {
dispatcher.forward(request, response);
} catch (Exception e1) {
log.error("Unable to forward the request from the portlet", e1);
}
} }

最佳答案

我不确定,但我猜你在重定向到错误页面时没有设置任何渲染参数。

试试这个,看看它是否有任何帮助(你可以把它放在 dispatcher 的那一行):

response.setRenderParameter("jspPage", "/WEB-INF/views/html/jsp/error.jsp");

我将这种重定向与 actionResponse 一起使用,但它也应该与 resourceResponse 一起使用...

编辑:资源响应不包含 setRenderParameter 方法,但您可以尝试使用以下方法:

使用 response.createRenderURL() 创建 renderURL。如果使用此 URL 触发请求,它将导致呈现请求/响应(或可以访问该方法的操作请求)。

问题是,您正试图在 Portlet 的资源阶段重定向到另一个页面(在此阶段未调用呈现阶段)。

关于java - 如何使 ResourceResponse 将请求转发到 liferay portlet 中的错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17870593/

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