У меня есть модальное окно с формой внутри.Пользователь может закрыть окно двумя способами: либо правильно заполнив форму и отправив изменения, либо нажав «x» в правом верхнем углу.
Теперь я пытаюсь сделать следующее:
Когда пользователь успешно заполняет форму и отправляет изменения, на родительской странице я пытаюсь отобразить (с помощью jQuery) некоторую информацию об успехе.
Когда пользователь нажимает «x», я хочу модальное окнобыть закрытым без какой-либо дополнительной информации.Однако setWindowClosedCallback не работает, как я ожидал.Взгляните на мой код, сначала я получаю ссылку на modalWindow (я пропустил некоторые неинтересные части кода, такие как добавление ввода формы и т. Д.):
public EditEmailForm( String id, final ModalWindow modalWindow,final User u )
{
super( id );
modalWindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback()
{
private static final long serialVersionUID = 1L;
@Override
public void onClose(AjaxRequestTarget target)
{
//here some code doing jQuery magic for parent page
}
});
AjaxSubmitLink closeBtn = new AjaxCloseCancelBtn( "close-x", this );
add( new AjaxSubmitLink( "save", this )
{
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit( AjaxRequestTarget target, Form<?> form )
{
//here's user info change
}
@Override
protected void onError( AjaxRequestTarget target, Form<?> form )
{
target.add( feedbackPanel );
}
} );
add( closeBtn );
}
protected class AjaxCloseCancelBtn extends AjaxSubmitLink
{
private static final long serialVersionUID = 1L;
public AjaxCloseCancelBtn( String id, Form<?> form )
{
super( id, form );
setDefaultFormProcessing( false );
}
@Override
protected void onSubmit( AjaxRequestTarget target, Form<?> form )
{
modalWindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback()
{
private static final long serialVersionUID = 1L;
@Override
public void onClose( AjaxRequestTarget arg0 )
{
}
});
// revert fields values
form.clearInput();
// close popup
modalWindow.close( target );
}
@Override
protected void onError( AjaxRequestTarget target, Form<?> form )
{
}
}
Этот код работает на 50% хорошо, так какон отображает то, что я хочу на родительской странице, но он также делает это, когда я нажимаю "х", даже если я пытаюсь установить обратный вызов закрытия нового окна, который является пустым.Любое решение, как я могу преодолеть это?