0

wicket、ajax、jquery を使用しています。フォーム (これには日付用の 2 つのフィールドがあります) を送信すると、ユーザーはファイル ダウンロードのポップアップを取得します。処理を表示するのに時間がかかるので、これは ajax と jquery で動作します。今の問題は、スピナーがないのに通常のウィケット送信ボタンを使用するときですが、レポートのダウンロードは正常に機能します。しかし、ajaxbutton を使用すると、スピナーが表示されますが、レポートを開く/保存するポップアップはありません。

次のコードは正常に動作し、開く/保存するポップアップが表示されますが、ajax アクションがないため、スピナーは表示されません。

add(new SubmitLink("runReport") {

  *//**
   * 
   *//*
  private static final long serialVersionUID = 10011L;

  *//**
   * 
   *//*
  @Override
  public void onSubmit() {
    HashMap<String, Object> map = new HashMap<String, Object>();
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    map.put("reportStartDate", formatter.format(getReportStartDate()));

    // Add a day to the end date to include the date entered by the user.
    Calendar cal = Calendar.getInstance();
    cal.setTime(getReportEndDate());
    cal.add(Calendar.DATE, 1);

    map.put("reportEndDate", formatter.format(cal.getTime()));
    generateReport(map,"ecommerceReport.rptdesign");
  }   
}
.add(RelativePathPrefixHandler.RELATIVE_PATH_BEHAVIOR)
);

次のコードはスピナーを ajax として表示しますが、開く/保存するポップアップはありません

AjaxButton runReportButton = new AjaxButton("runReport", this) {
    private static final long serialVersionUID = 10008L;

    @Override
    public void onSubmit(AjaxRequestTarget target, Form<?> form) {
        HashMap<String, Object> map = new HashMap<String, Object>();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        map.put("reportStartDate", formatter.format(getReportStartDate()));

        // Add a day to the end date to include the date entered by the user.
        Calendar cal = Calendar.getInstance();
        cal.setTime(getReportEndDate());
        cal.add(Calendar.DATE, 1);

        map.put("reportEndDate", formatter.format(cal.getTime()));
        generateReport(map,"ecommerceReport.rptdesign");
        target.addComponent(form);
    }
};

runReportButton.add(RelativePathPrefixHandler.RELATIVE_PATH_BEHAVIOR);
runReportButton.add(new SimpleAttributeModifier("onmouseup", "showPopup();"));

add(runReportButton);

次のコードでも機能しません。

add(new AjaxFallbackButton("runReport", this) {
    @Override
    protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
        HashMap<String, Object> map = new HashMap<String, Object>();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        map.put("reportStartDate", formatter.format(getReportStartDate()));

        // Add a day to the end date to include the date entered by the user.
        Calendar cal = Calendar.getInstance();
        cal.setTime(getReportEndDate());
        cal.add(Calendar.DATE, 1);

        map.put("reportEndDate", formatter.format(cal.getTime()));
        generateReport(map,"ecommerceReport.rptdesign");
        target.addComponent(form);
    }
});

何か助けて、私が間違っていること

4

1 に答える 1

1

Wicket wiki からのこのソリューションはあなたのために働くはずです - それはあらゆる種類の Ajax リクエストでダウンロードを開始することができます:

https://cwiki.apache.org/WICKET/ajax-update-and-file-download-in-one-blow.html

https://cwiki.apache.org/confluence/display/WICKET/AJAX+update+and+file+download+in+one+blow

于 2012-07-04T08:29:58.577 に答える