Извините за столь поздний ответ, но я заблудился в коде. Я не писал это, и я все еще начинаю с Wicket.
Я хотел начать все сначала, но я озадачен проблемой, которую не могу понять ... Я создал простую форму:
- текстовое поле для серийного номера
- кнопка, которая открывает модальное окно
Открытие и закрытие этого modalWindow не является сложной частью, но отправка значения из modalWindow для вставки его в форму практически невозможна.
Я почти точно следовал инструкциям в Интернете, и я не понимаю, где это пошло не так ...
При тестировании моего кода вот что я получаю:
- Я выбираю serialNumber из окна modalWindow и нажимаю кнопку «Отправить».
- 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));
Вот модальное окно
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;
}