I need to know how I can post a form to a new window using an AjaxSubmitLink.
I have a small page where a user can make a few setting changes and then either
save those settings (using an AjaxButton) or preview those settings (using an
AjaxSubmitLink) in a new window. The problem is, I can't figure out how to
make the preview button open in a new window. Since there are no popup
settings for an AjaxSubmitLink, I'm not sure what to do.
I've tried searching for a solution and the best I could find indicated that I
should use a form target="_blank". But that doesn't seem to change anything.
The call to setResponsePage always results in the preview page opening in the
same browser window.
Below is the code for my submit and preview buttons:
AjaxButton submit = new AjaxButton("websiteSetting-submit-button") {
@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
super.onError(target, form);
feedbackPanel.add(new AttributeModifier("style", true, new
Model("color:red;")));
target.addComponent(feedbackPanel);
target.addComponent(form);
}
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
processSubmission(target, form, false);
}
//Prepending the call to set the target to nothing for normal form
submission.
@Override
protected IAjaxCallDecorator getAjaxCallDecorator() {
return new
AjaxPreprocessingCallDecorator(super.getAjaxCallDecorator()) {
private static final long serialVersionUID = 1L;
@Override
public CharSequence preDecorateScript(CharSequence script) {
String sJs = "document.getElementById('" +
form.getMarkupId() + "').target = '';";
return sJs + script;
}
};
}
};
AjaxSubmitLink preview = new
AjaxSubmitLink("websiteSetting-preview-button") {
@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
super.onError(target, form);
feedbackPanel.add(new AttributeModifier("style", true, new
Model("color:red;")));
target.addComponent(feedbackPanel);
target.addComponent(form);
}
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
setResponsePage(HomePage.class);
}
//Prepending the call to set the target to "_blank" for preview
submission to new window.
@Override
protected IAjaxCallDecorator getAjaxCallDecorator() {
return new
AjaxPreprocessingCallDecorator(super.getAjaxCallDecorator()) {
private static final long serialVersionUID = 1L;
@Override
public CharSequence preDecorateScript(CharSequence script) {
String sJs = "document.getElementById('" +
form.getMarkupId() + "').target = '_blank';alert(document.getElementById('" +
form.getMarkupId() + "').target);";
return sJs + script;
}
};
}
};
Thanks,
Jeff
* This e-mail and any files transmitted with it may contain confidential and/or
privileged information and intended solely for the use of the individual or
entity to whom they are addressed. If you are not the addressee or authorized
to receive this for the addressee, you must not use, copy, disclose, or take
any action based on this message or any information herein. If you have
received this message in error, please advise the sender immediately by reply
e-mail and delete this message.