1

在检票口网页中,我使用 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);

}

我在这段代码上工作了几个小时,但我没有发现问题所在。

有人可以帮我吗?

4

0 回答 0