检票口面板的异常处理?

| 我为页面添加了异常处理,现在我想为面板添加异常处理。 我找到了http://apache-wicket.1842946.n4.nabble.com/ExceptionHandling-in-Panels-td3311271.html和http://apache-wicket.1842946.n4.nabble.com/newbie-best-practice- for-not-rendering-component-td1871632.html,但是答案并不令人满意,因为我意识到Wicket中没有内置支持面板的异常处理,就像页面一样。在具有面板标记的片段和错误片段之间进行选择并不是我想要的强大支持。 由于我的Web应用程序中的大多数异常都可能出现在添加组件和使用模型的逻辑部分中,因此我想到了将逻辑的这一部分放置在构造函数中,因此当发生错误时,我可以捕获到它然后显示我想要的错误面板。就像是:
try{
  add(new MyPanel(panelId, model));
}catch (Exception e){
  add(new ErrorPanel(panelId, e));
  ... 
}
但是当使用getString()方法解析构造函数中的属性时,会收到警告。 因此,我的问题是: -是否有在线示例可以解决此问题?或对此有任何想法? -如果在构造函数中使用getString()会抛出该类型的警告,那么最佳做法是什么? -我无法将该逻辑放在构造函数中,因为您不应该在其中解析属性,除了我提到的那些以外,还有哪些选项?     
已邀请:
与面板中的大多数逻辑一样,构造器也不是最佳选择。在构建期间,面板(或任何其他组件)尚未附加到页面上。这使组件处于易碎状态,其中某些组件甚至没有任何标记。 更复杂的逻辑应该放在构造函数之外。 Wicket 1.5提供了一种onInitialRender方法,可以在可以安全放置任何逻辑的地方重写该方法。在Wicket 1.4.x中,有一种简单的方法可以通过将onBeforeRender实现为
@Override
protected void onBeforeRender() {
    if (!hasBeenRendered()) {
        onInitialRender();
    }
    super.onBeforeRender();
}
这样就创建了一个只执行一次的onInitialRender-hook,并且IMO是放置任何不依赖于其他钩子的逻辑的最佳位置。 编辑:在您的情况下,警告指示无法使用预期的Resource-Lookups链,因为如果没有在当前组件或最终应用程序中找到资源,则没有可以用作备用的组件层次结构水平。     
注意:Wicket 1.5不提供onInitialRender方法(它可能是在某些预发行版中添加和删除的)。相反,应使用onInitialize方法将子组件添加到面板(或任何其他组件)。 有关详细信息,请参见https://cwiki.apache.org/WICKET/migration-to-wicket-15.html#MigrationtoWicket1.5-ComponentInitializationComponent%2523onInitialize。     

要回复问题请先登录注册