如何管理包含表单的ModalWindow?

时间:2010-09-23 14:49:17

标签: wicket

我正在尝试在页面“[MyPage]”中使用模态窗“[MW]”。

在[MyPage]中,有一个表单,div有一个wicket id到[MW]。 div不在[MyPage]的格式中。 在[MW]中,我可以使用一种形式进行搜索以从数据库中检索信息。

事实上,我的所有表单在Firefox和Chrome中运行良好。但是在IE中,当我在[MyPage]中提交表单时,它会显示[MW]。

我不知道如何解决这个问题,因为我已经将modalWindow和[MyPage]中的表单分开了。我尝试过像onclick =“formInMyPage.submit()”这样的Javascript,但它仍然无效。

1 个答案:

答案 0 :(得分:0)

很抱歉这么晚回答,但我迷失在代码中。我没有写它,我仍然从Wicket开始 我想从一开始就重新开始但是我很难理解我似乎无法理解的问题......我创建了一个简单的表单:

  • 序列号的文本字段
  • 打开modalWindow的按钮

打开和关闭modalWindow并不困难,但是从modalWindow发送一个值以便将其插入表单几乎是不可能的。

我几乎完全按照互联网上的教程,我不明白它出错的地方...... 在测试我的代码时,这就是我得到的:

  • 我从modalWindow中选择一个serialNumber,然后单击“发送”按钮。
  • modalWindow关闭,但我的表单中的serialNumber字段未更新。
  • 我不知道发生了什么,因为当我设置这个serialNumber并在modalWindow中选择另一个时,它的值就会消失。

以下是正式页面中的一些代码

    serialNumber = new TextField("serialNumber");
    modalMateriel = new ModalWindow("modalMateriel");


    modalMateriel.setContent(new ModalWindowMateriel(modalMateriel.getContentId()){
        public void onSave(AjaxRequestTarget ajaxRequestTarget){
            ajaxRequestTarget.addComponent(serialNumber);
            modalMateriel.close(ajaxRequestTarget);
        }
    });


    modalMateriel.setInitialWidth(1000);
    modalMateriel.setWidthUnit("px");
    modalMateriel.setInitialHeight(450);
    modalMateriel.setHeightUnit("px");
    modalMateriel.setTitle(getString("ManageRMA_modal_materiel_title"));
    modalMateriel.setCssClassName(ModalWindow.CSS_CLASS_GRAY);
    addOrReplace(modalMateriel);


    serialNumber.setEnabled(false);
    serialNumber.setOutputMarkupId(true);
    form.addOrReplace(serialNumber);


     form.addOrReplace(new AjaxLink("showModalMaterielButton") {
            @Override
            public void onClick(AjaxRequestTarget ajaxRequestTarget){

                ajaxRequestTarget.appendJavascript( "Wicket.Window.unloadConfirmation = false;" ); 
                modalMateriel.show(ajaxRequestTarget);
            }
        }.setVisible(true));

这是modalwindow

private String serialNumberRecherche;

public ModalWindowMateriel(String id){
   super(id);

   Form form = new Form("formMaterielsConsultation");
   List<String> list = new ArrayList<String>();
   list.add("1");
   list.add("11");
   list.add("111");
   list.add("1111");
   list.add("11111");
   form.addOrReplace(new DropDownChoice("serialNumberRecherche",new PropertyModel(this,"serialNumberRecherche"),list));


   //The submit button which aim is ti upDate "serialNumber" in the formal page
   AjaxButton button = new AjaxButton("Envoyer"){

       protected void onSubmit(AjaxRequestTarget ajaxRequestTarget, Form form) {
           onSave(ajaxRequestTarget);
       }
   };

   form.add(button);
   add(form);

}


public abstract void onSave(AjaxRequestTarget ajaxRequestTarget);

public String getSerialNumberRecherche() {
    return serialNumberRecherche;
}

public void setSerialNumberRecherche(String serialNumberRecherche) {
    this.serialNumberRecherche = serialNumberRecherche;
}