【问题标题】:How to force JSF to resend a request?如何强制 JSF 重新发送请求?
【发布时间】:2017-07-03 10:13:34
【问题描述】:

我的 JSF 应用程序中有一个随机错误,它会删除我的所有 HTTP 参数。它是随机发生的,我无法收到任何错误消息(即使遵循 BalusC 的建议 herehere)。

我无法查明原因并修复它,所以我想知道是否有另一种解决方案:如果我的所有参数都为空,则强制重新发送请求。有没有办法让浏览器重新发送它的请求?例如,通过 JSF 或 HTTP 错误代码。

编辑:清理不必要的代码。

【问题讨论】:

  • 您能否分享一些代码,以便我们检查发生了什么?
  • 我会尝试你所说的作为最后的手段(我认为这是一个丑陋的补丁)。实际上有一种方法可以强制浏览器重新发送请求,发送一个 REDIRECT 响应。但是,为了实现这一点,您可能需要在请求过滤器中拦截请求并从此处发送重定向响应,而不涉及 JSF。
  • 是的,它一个丑陋的补丁。我已经尝试了几个星期来解决这个问题,但没有成功。
  • 您可以尝试调试 FormulairesManagedBean 构造函数并查看字段最后保存的值吗?

标签: jsf jsf-1.2


【解决方案1】:

最后,我按照@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);
}

编辑:添加位置,否则浏览器有时会显示“无法访问页面”错误消息。

【讨论】:

    猜你喜欢
    • 2021-05-23
    • 2019-10-21
    • 2012-11-29
    • 2021-11-22
    • 2012-02-11
    • 2015-01-08
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    相关资源
    最近更新 更多