3

这是一个可以引发异常的示例按钮:

<h:commandButton value="save" update=":formTable:tableData">
    <f:setPropertyActionListener value="BTN_ONE"
        target="#{tamplateTableBean.buttonSelected}" />
</h:commandButton>

在我的ExceptionHandler我有:

FacesContext.getCurrentInstance().getExternalContext().redirect("error.xhtml");

当我使用<h:commandButton>(如上例)并发生异常时,将执行重定向并显示错误页面。当我使用时<p:commandButton>,不会发生重定向(即使redirect("error.xhtml")执行了行),它将保持在同一页面上,就好像什么都没发生一样。在 my 中捕获了异常ExceptionHandler,但未显示 JSF 错误页面。

这是如何引起的,我该如何解决?

4

1 回答 1

1

如链接 iIn BalusC 评论中所述 - Omnifaces 解决了这个问题。我删除了我的 ExcetionHandler 实现并更改为 Omnifaces -> 与文档一样,我导入 omnifaces.jar,添加到 faces-config.xml

<factory>
  <exception-handler-factory>
     org.omnifaces.exceptionhandler.FullAjaxExceptionHandlerFactory
  </exception-handler-factory>
</factory> 

和 web.xml

 <error-page> 
      <error-code>500</error-code> 
  <location>/faces/restricted/error.xhtml</location> 
 </error-page> 

现在我在 Ajax 请求中捕获异常并重定向到错误页面。(提示:error.xhtml 是 facelet 文件,请注意输入正确的路径)

于 2013-05-13T07:31:53.997 回答