如果基本检票口不包含<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(注入我的属性)的地方?
答案 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()方法以返回它。 希望有帮助!