2011-10-28 83 views
4

我有一個自定義InternalErrorPage,我投入ApplicationSettings如下:如何在Wicket的InternalErrorPage顯示堆棧跟蹤

getApplicationSettings().setInternalErrorPage(InternalErrorPage.class); 
getExceptionSettings().setUnexpectedExceptionDisplay(
    IExceptionSettings.SHOW_INTERNAL_ERROR_PAGE); 
getRequestCycleSettings().setUnexpectedExceptionDisplay(
    IExceptionSettings.SHOW_INTERNAL_ERROR_PAGE); 

我想在此頁面上顯示的堆棧跟蹤(如果我在開發模式是, 當然)。我怎樣才能做到這一點?

+0

它是壞的安全做法,以顯示在生產模式下的堆棧跟蹤(對客戶)。這就是Wicket不會將例外傳遞給此頁面的原因。 –

+1

是的我知道,這就是爲什麼我只寫開發模式 – javagirl

回答

4

在Wicket 1.4可以使用

getRequestCycle().onRuntimeException(new MyErrorPage(), theException); 

有看Wicket wikithe mailing list作進一步的解釋。

在Wicket 1.5 onRuntimeException中是removed。相反,你可以

「與org.apache.wicket.Application.getRequestCycleListeners()添加自己的org.apache.wicket.request.cycle.IRequestCycleListener(AbstractRequestCycleListener)。add()和實施其#onException(RequestCycle ,異常)」(從here報價)

+0

所以你建議把異常放在某種會話變量中?以便能夠從會話中獲取它並將其顯示在InternalErrorPage.java類中?我只是想知道 - 也許它已經由wicket itslef完成了,我只需要在我自己的頁面上發現這個異常 – javagirl

+2

不,你只需將異常傳遞給你自己的錯誤頁面。如果你遵循這些鏈接,你會發現它是在Wicket中完成的。 –