【发布时间】:2012-10-18 16:10:57
【问题描述】:
我有:
ListViewButton-
WebMarkupContainer(弹出内容容器)
所以,当我填充ListView 时,我会在按钮上添加一个AjaxEventBehavior。我还覆盖了getAjaxCallDecorator(),因为我需要从每个按钮调用一个javascript 函数。因此,在decorateScript 函数中,我使用setMarkupId() 覆盖WebMarkupContainer 标记ID,它可以工作。我对Button 做同样的事情,至少当我打电话给getMarkupId() 时它可以工作。但是当我转到生成的 HTML 时,它不存在!为什么会这样?
代码如下(在ListView的populateItem内):
infoBtn.add(new AjaxEventBehavior("onclick") {
@Override
protected void onEvent(AjaxRequestTarget target) {
}
@Override
protected IAjaxCallDecorator getAjaxCallDecorator() {
return new IAjaxCallDecorator() {
@Override
public CharSequence decorateScript(Component component, CharSequence script) {
StringBuilder jsScript = new StringBuilder();
infoPopoverContent.setMarkupId(infoPopoverContent.getMarkupId(true) + String.valueOf(pos));
infoBtn.setOutputMarkupPlaceholderTag(true);
infoBtn.setMarkupId(infoBtn.getMarkupId() + String.valueOf(pos));
jsScript.append("$('#" + infoBtn.getMarkupId() + "').popover({");
jsScript.append("html:true,");
jsScript.append("placement:'bottom',");
jsScript.append("content:function() {");
jsScript.append("return $('#");
jsScript.append(infoPopoverContent.getMarkupId());
jsScript.append("').html();");
jsScript.append("}");
jsScript.append("});");
logger.debug(jsScript.toString());
pos++;
return jsScript;
}
@Override
public CharSequence decorateOnSuccessScript(Component component,
CharSequence script) {
// TODO Auto-generated method stub
return null;
}
@Override
public CharSequence decorateOnFailureScript(Component component,
CharSequence script) {
// TODO Auto-generated method stub
return null;
}
};
}
});
【问题讨论】:
-
您想要做的事情,在 Wicket 中可以更轻松地完成!
-
谈论您的问题:请张贴用于填充项目的 HTML 标记。此外,如果可能,请发布生成的 HTML。
标签: java javascript html apache wicket