我想在春天基於portlet UI應用異常處理,異常在JSR286的portlet處理
我一直在使用@ControllerAdvice
使用彈簧globalexception handling
。
它在基於servlet的應用程序中工作正常,但它不適用於portlet應用程序。我注意到spring容器沒有在portlet中處理@ControllerAdvice
。我試圖在互聯網上搜索同一個問題,但沒有運氣。
是否有任何其他方式來處理Portlet應用程序中的異常?
在此先感謝。
我想在春天基於portlet UI應用異常處理,異常在JSR286的portlet處理
我一直在使用@ControllerAdvice
使用彈簧globalexception handling
。
它在基於servlet的應用程序中工作正常,但它不適用於portlet應用程序。我注意到spring容器沒有在portlet中處理@ControllerAdvice
。我試圖在互聯網上搜索同一個問題,但沒有運氣。
是否有任何其他方式來處理Portlet應用程序中的異常?
在此先感謝。
在Spring中的Portlet
支持正在迅速下降,只有很少的代碼或文檔。您會注意到DispatcherPortlet
會自動註冊AnnotationMethodHandlerExceptionResolver
的實例,而不是更新的ExceptionHandlerExceptionResolver
。
即使你手動定義在portlet.xml
文件後者的情況下,它不會被DispatcherPortlet
拾起,因爲它專門查找了org.springframework.web.portlet.HandlerExceptionResolver
,這是一個不同的層次比org.springframework.web.servlet.HandlerExceptionResolver
的實施者(其中ExceptionHandlerExceptionResolver
是後代)。
我遇到了同樣的問題,我發現沒有其他解決方案比使用繼承。我編寫了一個名爲PortletControllerAdvice的類(類似於如果您用@ControllerAdvice
註解類時將執行的操作),然後使所有類都從中繼承。
public abstract class PortletControllerAdvice {
@ExceptionHandler({ NotAuthorizedException.class, WebApplicationException.class })
public ModelAndView handleRESTException(WebApplicationException ex, ResourceResponse response) {
// Do stuff
}
}
然後我的控制器:
@Controller
public class ViewController extends PortletControllerAdvice {
}
這可能不是最好的解決方案,因爲它不是真正的繼承,我認爲一個很好的例子,但它似乎工作。
我也面臨同樣的問題。基於Spring的Portlet,試過@ControllerAdvice,它不起作用。 –