0

我想在 JSF 中动态设置一个错误页面。具体来说,我想做的是每当我ViewExpiredException刷新页面时。我目前正在使用 omnifacesFullAjaxExceptionHandler来管理我的异常,但它会从web.xml.

是否有捷径可寻?我应该考虑使用onError事件还是覆盖客户端导航FullAjaxExceptionHandler.findErrorPageLocation

4

1 回答 1

1

它从中读取错误页面,web.xml因为如果您首先不使用 JSF ajax,这是使用它们的标准方式。换句话说,FullAjaxExceptionHandler确保异常处理和错误页面显示的行为与您不使用 ajax 时的行为完全相同,例如<h:commandButton>没有<f:ajax>, or <p:commandButton ajax="false">,或者因为最终用户禁用了 JS。

您确实可以通过扩展异常处理程序和覆盖findErrorPageLocation方法来控制它,但是它的行为方式将不再与标准方式相同。

或者,在您的特定情况下可能是一种更好的方法,即仅指定一个特定的错误页面ViewExpiredException并通过通常的请求属性获取初始页面,并让 JavaScript 在页面加载时重定向到它。

<h:outputScript>
    window.location = "#{requestScope['javax.servlet.error.request_uri']}";
</h:outputScript>

作为奖励,它的工作方式与您不使用 JSF ajax 时完全相同。


我只是想知道这一切将如何改善用户体验。这可能只会让最终用户更加困惑;在回发期间会话过期时重新加载自身而没有任何额外反馈的页面。

于 2013-09-30T10:38:26.160 回答