1

为什么在使用 Response.sendRedirect() 将页面重定向到另一个页面后立即调用 FacesContext.responseComplete() 后 IE (IE8) 仍在尝试呈现当前页面。其他浏览器(Firefox、Chrome、Opera...)只是跳转到另一个页面而不尝试呈现当前页面。我正在使用 JSF 1.2 和 Richfaces 3.3 final。下面列出了 JSF 生命周期,用于触发命令按钮。请注意 IE 上的验证阶段。验证是根本原因吗?

其它浏览器

RESTORE_VIEW 1 之前

RESTORE_VIEW 1 之后

在 APPLY_REQUEST_VALUES 2 之前

在 APPLY_REQUEST_VALUES 2 之后

在 PROCESS_VALIDATIONS 3 之前

在 PROCESS_VALIDATIONS 3 之后

在 UPDATE_MODEL_VALUES 4 之前

UPDATE_MODEL_VALUES 4 之后

在 INVOKE_APPLICATION 5 之前

在 INVOKE_APPLICATION 5 之后

在 RENDER_RESPONSE 6 之前

RENDER_RESPONSE 6 之后

RESTORE_VIEW 1 之前

RESTORE_VIEW 1 之后

在 RENDER_RESPONSE 6 之前

RENDER_RESPONSE 6 之后

IE

RESTORE_VIEW 1 之前

RESTORE_VIEW 1 之后

在 APPLY_REQUEST_VALUES 2 之前

在 APPLY_REQUEST_VALUES 2 之后

在 PROCESS_VALIDATIONS 3 之前

在 PROCESS_VALIDATIONS 3 之后

在 UPDATE_MODEL_VALUES 4 之前

UPDATE_MODEL_VALUES 4 之后

在 INVOKE_APPLICATION 5 之前

在 INVOKE_APPLICATION 5 之后

在 RENDER_RESPONSE 6 之前

RENDER_RESPONSE 6 之后

RESTORE_VIEW 1 之前

RESTORE_VIEW 1 之后

在 APPLY_REQUEST_VALUES 2 之前

在 APPLY_REQUEST_VALUES 2 之后

在 PROCESS_VALIDATIONS 3 之前

...错误(与问题无关)

在 PROCESS_VALIDATIONS 3 之后

RESTORE_VIEW 1 之前

RESTORE_VIEW 1 之后

在 RENDER_RESPONSE 6 之前

RENDER_RESPONSE 6 之后

4

1 回答 1

0

这个问题与 JSF 无关。特定于浏览器的问题通常是由 HTML/CSS/JS 等客户端代码引起的,而不是由 JSF 等服务器端代码引起的。此特定问题可识别为 JavaScript 问题。您需要检查是否没有任何 JavaScript 代码在 onload / DOM-ready 期间执行某些任务,例如自动提交表单。阶段侦听器跟踪即表明执行了 POST 请求(阶段#2 到 #5 通常仅在回发期间出现)。

很可能有一些不可预见的特定于浏览器的 JS 条件导致在 MSIE 中触发 POST 请求。

于 2012-10-31T18:26:04.707 回答