Wicket:FileUpload删除重复查看
问题描述:
以下Wicket: FileUploadField with ListView现在我需要允许用户使用FileUploadField旁边的按钮逐个删除文件。Wicket:FileUpload删除重复查看
它正常工作时,这些文件已经得救了,但是当他们不是FileUploadField是reseted ...
所以我已经试过这样:
AjaxLink<Void> deleteLink = new AjaxLink<Void>("deleteLink") {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
EtdConfigForm parent = (EtdConfigForm)EtdDokumentRowForm.this.getParent().getParent().getParent().getParent().getParent();
EtdDokumentRowPanel panel = (EtdDokumentRowPanel)EtdDokumentRowForm.this.getParent();
parent.removeDokument(panel);
target.prependJavascript("var itemRemove = document.getElementById('"+ panel.getMarkupId() + "');" +
"itemRemove.parentNode.removeChild(itemRemove);" +
"Wicket.$('" + panel.getParent().getParent().getMarkupId() + "').children('"+ panel.getMarkupId()+"').remove();");
target.addComponent(parent);
}
};
add(deleteLink);
但它不工作...我的意思是ajax片...我做错了什么?
答
首先,根据当前组件的位置,您应该避免此方法的连锁调用,因为它根本不灵活。
要查找输入父组件,您可以使用组件的findParent(final Class<Z> c)
方法。
其实,我不明白你的AjaxLink
被放置在哪里,但我认为它应该直接在EtdDokumentRowPanel
附近FileUploadField
。
因此,要删除整个EtdDokumentRowPanel
,您应该首先将其从RepeatingView
中删除,然后执行带删除标记的脚本。当然,如果你把这个面板存储在其他地方(在EtdConfigForm
,我想),那么它应该从那里删除。
不要在父对象中搜索RepeatingView
,最好通过构造函数将它传递给每个EtdDokumentRowPanel
。
这将是类似的东西:
public class EtdDokumentRowPanel extends Panel
{
...
public EtdDokumentRowPanel (String id, EtdDokument doc, final RepeatingView view)
{
//your panel should have markup id:
setOutputMarkupId (true);
...
AjaxLink<Void> deleteLink = new AjaxLink<Void> ("deleteLink")
{
@Override
public void onClick (AjaxRequestTarget target)
{
EtdDokumentRowPanel thisPanel = EtdDokumentRowPanel.this;
// removing row panel from RepeatingView:
view.remove (thisPanel);
// execute this js to remove child from Wicket parent component:
target.prependJavascript (
"Wicket.$('" + view.getParent().getMarkupId() + "')" +
".removeChild(Wicket.$('" + thisPanel.getMarkupId() +
"'));");
}
};
add (deleteLink);
...
}
}
是,按钮是行面板。很多人非常感谢你的善意帮助。 – diminuta 2014-11-28 09:19:04