从Wicket中的组件呈现失败中恢复

时间:2016-06-03 15:55:06

标签: java exception-handling wicket

让我们考虑一下这个案例:

Wicket页面包含几个组件,其中一个组件的渲染失败,并出现一些常见的运行时异常(如NullPointerException)。

我默认看到的结果是:整个页面无法呈现。

如何在Wicket中从这个错误中恢复?应该做什么,而不是只渲染或替换失败的组件?

3 个答案:

答案 0 :(得分:0)

自定义IRequestCycleListener是您正在寻找的解决方案。请阅读Carl-Eric的回答:

How to handle exceptions thrown in Wicket custom model?

答案 1 :(得分:0)

在“经典”wicket应用程序中,页面和组件由构造函数和初始化程序中的代码实例化,您可能必须手动为每个可能的构造函数调用添加try-catch块。 Wicket不是托管框架,这意味着没有可以通过此类功能进行装饰的中央组件工厂。这并不意味着你不能自己创建这样的组件工厂。

在我们自2006年以来一直在开发的CMS类应用程序中,所有wicket组件都由构建器实例化,这些构建器本身是从xml或json文档创建的(因此应用程序的完整布局和配置是外部化的,并且wicket组件只是可以像lego一样混合搭配的小型建筑盒子 - 所以我知道这种方法有效且表现良好。在我们的示例中,每个创建组件的构建器方法都有一个try-catch块,如果发生任何RuntimeException,则会创建一个空Label。

答案 2 :(得分:0)

这是奇怪的要求,以我的拙见。

替换组件的渲染是什么也失败了?添加额外的逻辑?!或者让它因堆栈溢出错误而失败?

如果页面中有一半组件出现故障怎么办?您将显示包含适当内容的半页,另一个显示“Oopsies”?!

如果有错误则应该修复!