Jsf 2 JSF2.1错误处理

Jsf 2 JSF2.1错误处理,jsf-2,error-handling,Jsf 2,Error Handling,JSF2.1中处理错误的正确方法是什么?我看到很多帖子都提出了不同的建议,但我猜大多数都是针对JSF的早期版本。对于某些错误,我只需要一个基本的错误处理来显示某些错误页面,对于所有其他错误,我只需要一个常规错误页面。我在2.1中发现的是将以下内容放入web.xml中: <error-page> <error-code>404</error-code> <location>/faces/error.xhtml</location

JSF2.1中处理错误的正确方法是什么?我看到很多帖子都提出了不同的建议,但我猜大多数都是针对JSF的早期版本。对于某些错误,我只需要一个基本的错误处理来显示某些错误页面,对于所有其他错误,我只需要一个常规错误页面。我在2.1中发现的是将以下内容放入web.xml中:

<error-page>
    <error-code>404</error-code>
    <location>/faces/error.xhtml</location>
</error-page>
使用上述方法,错误会传播到servlet,并记录到服务器中。有没有一种方法可以在不引发会传播到servlet的异常的情况下处理错误

有没有一种方法可以在不引发会传播到servlet的异常的情况下处理错误

你可以用它

externalContext.responseSendError(HttpServletResponse.SC_NOT_FOUND, "some message");
facesContext.responseComplete();

注意,这不是JSF2.1所特有的。这同样适用于JSF2.0及更早版本。还请注意,这种做法通常不是处理异常的正常做法,因为在中,您实际上捕获了一个异常;错误页面不是预检查失败的结果,其中根本没有引发异常。通常,您只需抛出异常和/或将其重新定义为JSF操作方法中的抛出,并让web.xml中的。只有JSF ajax请求的异常处理需要自定义异常处理程序实现,但情况不同。

400 ad请求与404 not Found不同。我的错。应该是404。现在修好了。你说这种做法不是正常的做法。如果错误与应用程序的内部功能及其业务逻辑有关,那么我应该使用此方法吗?另外,使用ResponseAndError是否需要web.xml中的错误页来处理该异常?那么,应用程序是否仍会抛出异常?您正在询问如何在不抛出异常的情况下显示错误页。我刚才回答的正是这个问题。它根本不会抛出异常。自定义不是强制性的,但当您希望为特定状态代码提供自定义错误页时,很高兴知道/拥有自定义错误页。
externalContext.responseSendError(HttpServletResponse.SC_NOT_FOUND, "some message");
facesContext.responseComplete();