Wicket 更改组件';加载其模型失败时,在渲染阶段删除其内容

Wicket 更改组件';加载其模型失败时,在渲染阶段删除其内容,wicket,Wicket,我有一个具有简单标记继承的小部件组件,如下所示 抽象控件 LabelWidget 现在,假设标签内容取自可加载的可分离模型,加载该模型会引发异常 我需要向用户展示一些关于这个“坏”小部件组件的反馈。当加载其模型引发异常时,是否有方法替换整个子对象的内容 请注意,LabelWidget只是许多AbstractWidget孩子中的一个,因此我需要在AbstractWidget中解决这个问题,并且我还需要保留AbstractWidget组件中的所有元素。您可以通过使用一个更智能的模型来实现这一

我有一个具有简单标记继承的小部件组件,如下所示

抽象控件

LabelWidget

现在,假设标签内容取自可加载的可分离模型,加载该模型会引发异常

我需要向用户展示一些关于这个“坏”小部件组件的反馈。当加载其模型引发异常时,是否有方法替换整个子对象的内容


请注意,
LabelWidget
只是许多
AbstractWidget
孩子中的一个,因此我需要在
AbstractWidget
中解决这个问题,并且我还需要保留
AbstractWidget
组件中的所有元素。

您可以通过使用一个更智能的模型来实现这一点,该模型委托给原始模型并如果抛出异常,请尝试/捕获。在异常情况下,您需要返回一个“空”模型对象,其中“空”对于您的不同用例意味着不同的事情

您的智能模型可以实现
IComponentAssignedModel
,以便了解所使用的
组件。这样,在
catch
子句中可以执行
component.error(“…”)
。在
AbstractWidget
中,您应该添加一个
反馈面板
,该面板将呈现错误消息。专门化小部件(如
LabelWidget
)将通过使用回退模型呈现为“空”(无论这对它意味着什么)

<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>