【问题标题】:Java Wicket - Prevent Form From Creating New Tab When Exception OccursJava Wicket - 发生异常时防止表单创建新选项卡
【发布时间】:2016-08-08 11:05:33
【问题描述】:

我现在正在使用 Jasper 创建报告,几乎一切顺利。我们将其设置为如果用户将预览报告,则报告(pdf)将显示在新选项卡上。问题是,如果发生错误,仍会打开一个新选项卡,而不是仅在原始页面上显示反馈面板。

如何设置表单以使反馈面板显示在原始页面而不是新打开的选项卡上?

Form<?> form = new Form<Void>("form");
form.add(new AttributeAppender("target", Model.of("_blank")));

SubmitLink view= new SubmitLink("view") {
    @Override
    public void onSubmit() {
        //code inside a try-catch to generate the report using Jasper}
};    

CptiDownloadButton download = new CptiDownloadButton("download", new AbstractReadOnlyModel<File>(){
 //CptiDownloadButton extends SubmitLink button and is a modification of Mr Ivaynberg's DownloadLink
};


<form wicket:id="form">
    <a href="#" wicket:id="submit"><input type="button" wicket:message="value:search"/></a>
    <a href="#" wicket:id="download"><input type="button"  wicket:message="value:download"/></a>
</form>

提前感谢任何愿意回答的人。 ^^

【问题讨论】:

    标签: forms tabs wicket


    【解决方案1】:

    如果您使用target="_blank" 向表单提交任何表单,浏览器将自动打开一个新选项卡以呈现表单提交的响应。这是预期的行为,试图阻止它违反了标准的target="_blank" 行为。我想我的意思是你真的应该考虑打破这种标准行为是否是你想要做的事情。

    如果是,这就是我的处理方式。警告:不会是干净的。

    使用 Ajax(AjaxButton 或 AjaxFormSubmitBehavior)提交表单。由于它是通过 ajax 完成的,浏览器不会调用默认的表单提交行为,因此不会打开新标签。

    Ajax 然后调用表单处理。出错时,重新渲染反馈面板并返回。成功附加 JavaScript 以在请求返回时调用相应链接上的默认表单提交。这将执行标准的表单提交行为,因此执行target="_blank"。它将再次验证表单,但随后将继续执行最初预期的行为。

    您在所需链接上调用默认表单提交的方式可以通过几种不同的方式完成,完全取决于您。作为一种快速而肮脏的方式,您可以隐藏您现在拥有的按钮(视觉上)并执行 javascript 来单击按钮。或者,如果您不希望出现丑陋的隐藏点击行为,您可以使用隐藏的表单字段来识别点击了哪个按钮。

    【讨论】:

      【解决方案2】:

      你必须做一个表单(Ajax)——不带目标提交,然后在检查可能的错误后开始实际下载。

      有关 Ajax 和附件内容处置的示例,请参阅 https://cwiki.apache.org/confluence/display/WICKET/AJAX+update+and+file+download+in+one+blow。

      【讨论】:

      • 嗨,斯文先生!我已经可以下载部分了。我现在只想在报告正在预览或下载时发生异常时阻止表单创建新选项卡。
      • 查看 WiseTree 的答案以获得更好的解释。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-08
      • 1970-01-01
      • 2020-01-07
      • 2018-07-09
      • 2011-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多