我有一个预览按钮。当用户按下预览按钮时,表单会在新标签页上提交,以显示包含表单数据的PDF文件。 我使用自定义的SubmitResourceLink来实现这一功能。
public abstract class SubmitResourceLink extends SubmitLink implements IResourceListener {
private final IResource resource;
@Override
public final void onResourceRequested() {
Attributes a = new Attributes(RequestCycle.get().getRequest(), RequestCycle.get().getResponse(), null);
resource.respond(a);
}
在表单上实现
new SubmitResourceLink("previewBtn", form, new JasperReportsResource() {
private static final long serialVersionUID = -2596569027102924489L;
@Override
public byte[] getData(Attributes attributes) {
return control.getExportPreviewByteStream(estimateModel.getObject());
}
}) {
private static final long serialVersionUID = 1L;
@Override
protected String getTriggerJavaScript() {
String js = super.getTriggerJavaScript();
js = "document.getElementById('" + form.getMarkupId() + "').target='_blank';" + js;
return js;
}
@Override
public void onSubmit() {
form.add(AttributeModifier.append("target", Model.of("_blank")));
processInputs(form);
onResourceRequested();
}
}.setDefaultFormProcessing(false);
当我点击预览时,会打开一个新的选项卡。但是当我在任何ajax组件(例如:AutoCompleteTextField)中输入时,ajax响应数据xml:
<ajax-response><redirect>....</redirect></ajax-response>
并刷新页面。
现在,我希望在点击预览后,仍然可以正常使用当前表单。
谢谢。