1

ウィケット Web ページでは、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