扩展没有<wicket:child />标记的基本wicket html

时间:2019-10-16 08:08:31

标签: java wicket

如果基本检票口不包含<wicket:child/>标签,是否可以扩展现有检票口(=在现有检票口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之前,是否有任何事件可以附加到我可以修改原始html(注入我的属性)的地方?

2 个答案:

答案 0 :(得分:2)

您可以覆盖 public class Display{ Callback callback; public Dispaly(Callback callback){ this.callback = callback; } public void showTestDialog() { final EditText edittext = new EditText(activity); alertDialog = new AlertDialog.Builder(activity).create(); alertDialog.setTitle("Alert"); alertDialog.setMessage("Alert message to be shown"); alertDialog.setView(edittext); alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Strint value = String.valueOf(edittext.getText()); callback.onUserInput(value) dialog.dismiss(); } }); alertDialog.show(); } } public class B{ Display display = new Display(new Callback() { void onUserInput(String input){ // DO WHAT you need } }); display.showTestDialog(); } interface Callback { void onUserInput(String input); } 方法并修改其结果,但它不仅仅是提供带有所做修改的完整.html文件,而且更加骇人听闻。

提供您自己的标记文件对我来说完全是件好事!

答案 1 :(得分:0)

执行此操作的一种方法是在您的基本页面中定义一个方法,该方法返回一个Fragment,该Fragment将插入下面的“ 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定义Fragment并重写getChildContent()方法以返回它。 希望有帮助!