【发布时间】:2015-06-03 02:02:29
【问题描述】:
我有一个预览按钮。当用户按下预览时,表单会在新选项卡上提交,以显示 pdf 文件在表单中有数据。 我使用自定义 SubmitLink 来做到这一点 提交资源链接
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> 并刷新页面。
现在,我想在新闻预览后,我仍然正常使用当前表单。
谢谢。
【问题讨论】: