如果基本wicket不包含<wicket:child/>标签,是否可以扩展现有wicket (=在现有wicket html中追加额外的属性/文本框)?
例如,我想扩展一些使用以下html的java类:
<wicket:panel>
<div class="field-wrapper"><input wicket:id="field1" type="text"/></div>
[I WANT TO INJECT ANOTHER TEXTBOX HERE]
</wicket:panel>我的扩展类继承了继承类的所有基属性,并且我声明了一个附加属性。但我不知道是否/如何在基本html中添加附加属性,而不必克隆整个原始html并添加我的新属性,这不是一个优雅的解决方案。
有没有什么事件可以在解析/渲染之前修改原始的html (注入我的属性)?
发布于 2019-10-16 16:33:31
您可以覆盖#getMarkup()方法并修改其结果,但这比只提供一个包含修改的完整.html文件要麻烦得多。
提供你自己的标记文件对我来说是非常优雅的!
发布于 2019-10-28 00:56:44
要做到这一点,一种方法是在基页中定义一个方法,该方法返回一个片段,该片段将被插入到下面的“childContent”中:
<wicket:panel>
<div class="field-wrapper"><input wicket:id="field1" type="text"/></div>
<div wicket:id="childContent"></div>
</wicket:panel>因此,在您的基页中,您将具有此函数,该函数默认返回null,但扩展页可以覆盖它以提供其自己的特定内容:
protected Fragment getChildContent() { return null; }您的基页将按如下方式使用它:
Fragment childContent = getChildContent();
if(childContent != null) {
addOrReplace(childContent);
} else {
addOrReplace(new WebComponent("childContent").setVisible(false));
}在扩展页面中,您可以使用它自己的html定义一个片段,并覆盖getChildContent()方法以返回它。希望这能有所帮助!
https://stackoverflow.com/questions/58408585
复制相似问题