2012-03-21 9 views
0

Wicketページでは、私は提出時に表示される画像(AbstractDefaultAjaxBehavior.INDICATOR)を持っています。その後、ファイルを監視するAjaxSelfUpdatingTimerBehaviorを開始します。Wicketダウンロードリンク

今、同じファイルをダウンロードするためのDownloadLinkもあります。しかし、ダウンロードした後、上記の回転する画像は回転を停止します。この問題の解決法はありますか?私は戸口が初めてです。提案してください。

public LoggingPage() { 

Form<Void> form; 
    this.add(form = new Form<Void>("resourceForm") { 
     private static final long serialVersionUID = 1L; 

     @Override 
     protected void onSubmit() { 
      submit(); 
     } 
    }); 
    add(new DownloadLink("downloadButton", new AbstractReadOnlyModel<File>() 
    { 
     private static final long serialVersionUID = 1L; 

     @Override 
     public File getObject() 
     { 
      File file; 
      try 
      { 
       file = new File(LoggingPage.this.fileDetail.getLocation()); 
      } 
      catch (Exception e) 
      { 
       throw new RuntimeException(e); 
      } 
      return file; 
     } 
    })); 

}//cons ends 

private void submit() { 
    if (this.serverDetail != null && this.fileType != null && this.fileDetail != null) 
    { 
     if (this.fileViewer != null) 
     { 
      this.repeater.removeAll(); 
     } 
     File file = new File(this.fileDetail.getLocation()); 
     file = new File("C:/ueshome/logs/safe.log"); 
     this.fileViewer = new FileViewer(file); 
     this.fileViewer.startTailing(); 
     log.debug("load of allLog: " + this.fileViewer.getOldLog()); 
     buildItem(this.fileViewer.getOldLog().getLog().toString()); 
     this.container.add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(1)) 
     { 
      @Override 
      protected void onPostProcessTarget(final AjaxRequestTarget target) 
      { 
       target.appendJavascript("$('#container').scrollTop(999999999)"); 
       log.debug("onPostProcessTarget: " + LoggingPage.this.fileViewer.hashCode() + "at: " + System.currentTimeMillis()); 
       final FileAttributes fileAttributes = LoggingPage.this.fileViewer.getNewLog(); 
       String newLog = fileAttributes.getLog().toString(); 
       log.debug("nextlog inside load()"); 
       if (newLog != null && newLog.trim().length() > 0) 
       { 
        log.debug("~~~~~~~~~~~~~~~~~~~~````*****:" + newLog); 
        log.debug("String.valueOf(fileAttributes.getSize()))~~~~~~~~~~~~~~~~~~~~````*****:" + String.valueOf(fileAttributes.getSize())); 
        log.debug("String.valueOf(fileAttributes.getLastModified()): " + String.valueOf(fileAttributes.getLastModified())); 

        if (LoggingPage.this.repeater.getSizeInBytes() >= logSize) 
        { 
         LoggingPage.this.repeater.removeAll(); 
        } 
        Component item = buildItem(newLog); 

        target.prependJavascript(String.format(
          "var item=document.createElement('%s');item.id='%s';Wicket.$('%s').appendChild(item);", 
          "div", item.getMarkupId(), LoggingPage.this.container.getMarkupId())); 

        //      LoggingPage.this.imgContainer.setVisible(true); 
        //      target.addComponent(LoggingPage.this.imgContainer); 
        target.addComponent(item); 

        target.appendJavascript("$('#fileAttributesContainer').show(); "); 
        target.appendJavascript("$('#container').scrollTop(999999999)"); 
        target.appendJavascript("$('#imageContainer').show(); "); 

       } 
       else 
       { 
        target.appendJavascript("$('#fileAttributesContainer').show(); "); 
        target.appendJavascript("$('#container').scrollTop(999999999)"); 
        target.appendJavascript("$('#imageContainer').show(); "); 
       } 

       target.appendJavascript("alert('You are in Ajax Self')"); 
      } 
+1

コードのサンプルをお願いしますか? – magomi

+0

サンプルコードを追加しました。迅速な対応に感謝します。 – user1521828

+1

将来的には、コードを追加するときに、質問を回答で掲示するのではなく編集するだけです。 – Wilduck

答えて

1

まず、あなたのコードで何が間違っているのか分かりません。あなたの仕事をどのように解決するかとは少し違って見えます。

私が理解しているように、ユーザーが送信ボタンに当たった後にアニメーション化された画像(アニメーションGIF)が必要です。そして、ある条件が満たされた後(アニメーションの作成が終了したなど)、アニメーションを停止する必要があります。また、ファイルのダウンロードリンクが必要です。私はどうなるのか

は、ファイルをチェックし、一定の条件が満たされた場合には、画像を変更することで、多分(画像を変更

  • がAjaxSelfUpdatingTimerBehaviorが追加表示されますアニメーションGIFを使用

    • ですイメージの可視性を設定するか、イメージコンテナのCSS属性を変更することによって)画像のコンテナを変更する必要があります.Ajaxボタンを使用するか、またはリソースストリームを配信する通常のリンクを変更する必要がない場合は、ファイルのダウンロード用に
    • あなたのファイル

    ほんの少し役に立ちます。

  • +0

    に感謝します。私はこれらがうまくいくと思います。 – user1521828

    +0

    上記のポイント3のサンプルコードを用意してください(ファイルダウンロードの場合は、Ajaxボタンを使用するか、ファイルのリソースストリームを配信する通常のリンクを変更する必要はありません) – user1521828

    +0

    申し訳ありません。回答。 私はgithubの簡単な例を提供しました:https://github.com/magomi/wicket-download-sample ラベルとダウンロードリンクを提供しています。リンクをクリックするとダウンロードが開始され、ラベルはajaxで変更されます。この中核部分(AjaxDownloadBehavior)はwicket wikiに記載されています:https://cwiki.apache.org/WICKET/ajax-update-and-file-download-in-one-blow.html – magomi