假设您有一个带有视图参数的页面,例如/widgets?widgetId=1
<f:metadata>
<f:viewParam
name="widgetId"
value="#{widgetIdMB.widgetId}"
converter="#{widgetIDConverter}" />
</f:metadata>
所以,少说你的转换器抛出一个ConverterException
,因为有人试图导航到 /widgets?widgetId=1000000
数据库中不存在的。发生这种情况时,有没有办法将人发送到 404 页面?
编辑:
我使用转换器来转换值。如果无法在数据库中查找该值,则转换器返回 null,而不是抛出 ConverterException。
然后我使用验证器。验证器将抛出一个验证异常,但不会在调用 omnifaces 实用程序类之后:Faces.responseSendError(404, "Not Found");
这似乎是关注点分离的最佳实现。