如何强制 JSF 重新发送请求?
How to force JSF to resend a request?
我的 JSF 应用程序中有一个随机错误会删除我的所有 HTTP 参数。它是随机发生的,我无法收到任何错误消息(即使遵循 BalusC 的建议 here and here)。
我无法查明原因并修复它,所以我想知道是否有其他解决方案:如果我的所有参数都为空,则强制重新发送请求。有没有办法让浏览器重新发送它的请求?例如,通过 JSF 或 HTTP 错误代码。
编辑:清理了不必要的代码。
最后,我听从了@Xtreme Biker 的建议,而是构建了一个过滤器。它检查参数是否存在,否则发送重定向响应(HTTP 错误代码 307)。然后浏览器发回相同的请求,继续进行。
类似于:
String formWebContainerWidth = httpRequest.getParameter("myParam");
if(formWebContainerWidth == null){
// SC_TEMPORARY_REDIRECT = 307
httpResponse.setStatus(HttpServletResponse.SC_TEMPORARY_REDIRECT);
httpResponse.setHeader("Location", httpRequest.getRequestURI());
} else {
chain.doFilter(request, response);
}
编辑:添加了位置,否则浏览器有时会显示 "page cannot be reached" 错误消息。
我的 JSF 应用程序中有一个随机错误会删除我的所有 HTTP 参数。它是随机发生的,我无法收到任何错误消息(即使遵循 BalusC 的建议 here and here)。
我无法查明原因并修复它,所以我想知道是否有其他解决方案:如果我的所有参数都为空,则强制重新发送请求。有没有办法让浏览器重新发送它的请求?例如,通过 JSF 或 HTTP 错误代码。
编辑:清理了不必要的代码。
最后,我听从了@Xtreme Biker 的建议,而是构建了一个过滤器。它检查参数是否存在,否则发送重定向响应(HTTP 错误代码 307)。然后浏览器发回相同的请求,继续进行。
类似于:
String formWebContainerWidth = httpRequest.getParameter("myParam");
if(formWebContainerWidth == null){
// SC_TEMPORARY_REDIRECT = 307
httpResponse.setStatus(HttpServletResponse.SC_TEMPORARY_REDIRECT);
httpResponse.setHeader("Location", httpRequest.getRequestURI());
} else {
chain.doFilter(request, response);
}
编辑:添加了位置,否则浏览器有时会显示 "page cannot be reached" 错误消息。