在检票口网页中,我使用 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))
}
}
}
下面是子页面的代码,实际上是一个面板
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);
}
我在这段代码上工作了几个小时,但我没有发现问题所在。
有人可以帮我吗?