我有一个具有简单标记继承的小部件组件,像这样
<wicket:panel>
<wicket:child />
<div wicket:enclosure="editButton" class="widget-edit-wrapper">
<button wicket:id="editButton" type="button" class="widget-edit">
<span class="glyphicon glyphicon-cog"></span>
</button>
<div style="display:none;">
<div wicket:id="editPanel" class="widget-settings"></div>
</div>
</div>
</wicket:panel>
<wicket:extend>
<div wicket:id="container" class="label-widget flex-container">
<div wicket:id="label"></div>
</div>
</wicket:extend>
现在想象标签内容是从可加载的可拆卸模型中获取的,加载该模型会引发异常。
我需要向用户显示一些有关此“损坏的”小部件组件的反馈。当加载其模型引发异常时,是否可以替换整个孩子的内容?
请注意,LabelWidget
只是众多AbstractWidget
子级中的一个,因此我需要在AbstractWidget
中解决此问题,还需要保留AbstractWidget
组件中的所有元素
答案 0 :(得分:0)
您可以使用更智能的模型来完成此任务,该模型可以委派给原始模型,并在引发异常时尝试/捕捉。如果发生异常,您将需要返回一个“空”模型对象,其中“空”对于您的不同用例将具有不同的含义。
您的智能模型可以实现IComponentAssignedModel
,以便知道它所使用的Component
。通过这种方式,您可以在catch
子句中使用component.error("...")
。在AbstractWidget
中,您应该添加一个FeedbackPanel
来呈现错误消息。像LabelWidget
这样的特殊化小部件将通过使用后备模型呈现为“空”(无论这意味着什么)。