在一个wicket网页中,我使用ListView来显示对象和每一行 该组件有一个链接可以打开一个PrettyPopin模态窗口来编辑一个对象。
问题是,在提交事件中,模态窗口不会返回父页面或原始页面并重新加载。
首先显示父页面代码
class ObjListPanel(pageOrigin: PageBase/*WebPage*/)
extends Panel("objListPanel") with Serializable {
add(new ListView[Obj]("listObj", listData) {
def populateItem(item: ListItem[Obj]) = {
item.add(new LinkEdit("edit", obj))
}
})
var editObjWinModal = new ModalWindow("modalEditObj")
editObjWinModal.setPageMapName("modalEditObj")
editObjWinModal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
def onClose(target: AjaxRequestTarget) = setResponsePage(pageOrigin)
})
add(editObjWinModal)
private class LinkEdit(id: String, obj: Obj) extends Link[String](id) {
add(new Label("label", new Model[String]() {
override def getObject: String = "Edit"
}))
var prettyOpt = new PrettyPopinOptions()
var pretty = new PrettyPopinBehavior(prettyOpt.width(550).height(200).followScroll(false))
add(pretty)
def onClick() {
new EditObjPanel(editObjWinModal.getContentId(), this.obj, pageOrigin);
setResponsePage(new EditObjPage(this.obj, pageOrigin))
}
}
}
而bellow是子页面的代码,实际上是一个Panel
class EditObjPanel(id: String, obj: Obj, pageOrigin: PageBase/*WebPage*/) extends Panel(id) {
var form = new Form[Obj]("form") {
override protected def onSubmit = {
objController.salvarObj(obj)
// This method doesn't work
// after submit the modal didn't close, instead is reloaded again
setResponsePage(new EditPontoPage(obj, pageOrigin))
}
}
add(form);
form.setOutputMarkupId(true)
container = new WebMarkupContainer("container")
form.add(container);
}
我正在处理这段代码几个小时,但我没有弄错。
有人可以帮我吗?