2012-08-02 7 views
5

in meinem aktuellen Projekt habe ich ein Problem der Anpassung von IndicatingAjaxLink in Wicket konfrontiert, gibt es eine Lösung, standart GIF-Bild zu meinen eigenen zu ändern? Zum Beispiel haben wir folgende listeneerAnpassen von IndicationAjaxLink in Wicket

add(new IndicatingAjaxLink("closeReceivedBillspanel") { 
      public void onClick(AjaxRequestTarget art) { 
        // some timeconsuming calculations 
      } 
    }); 

als Benutzer auf diesen Link klickt, wird die gif mit dem Laden, und ich will dieses gif ändern, gibt es eine Lösung für dieses Problem?

Antwort

13

Haben Sie Ihre Seite implementiert die IAjaxIndicatorAware Schnittstelle

public class BasePage extends WebPage implements IAjaxIndicatorAware { 

public BasePage(final PageParameters parameters) { 
    // Home link 
    AjaxLink<Page> homeLink = new AjaxLink<Page>("homeLink") { 
     private static final long serialVersionUID = 1L; 

     @Override 
     public void onClick(AjaxRequestTarget target) { 
     setResponsePage(HomePage.class); 
     } 
    }; 
    add(homeLink); 
    } 

    @Override 
    public String getAjaxIndicatorMarkupId() { 
    return "indicator"; 
    } 

Auf diese Weise können Sie im html gesetzt, jedes Bild, das Sie anzeigen möchten, wenn die Belastung durch Änderung des Bildes in dem „img“ Tag erscheint

<div id="indicator" style="display: none;"> 
<div class="indicator-content"> 
    Please wait... <wicket:link><img src="images/loading.gif" width="16" height="16" alt="loading" /></wicket:link> 
</div> 
</div> 
2

erstellen yoru benutzerdefinierte Klasse wie, (kopieren, was nach innen IndicatingAjaxLink und Update)

public class MyIndicatingAjaxLink<T> extends AjaxLink<T> implements IAjaxIndicatorAware { 
     private final MyAjaxIndicatorAppender indicatorAppender = new MyAjaxIndicatorAppender();  
    . 
    //rest of the code is same as IndicatingAjaxLink class 
    . 
    } 

Darüber hinaus müssen Sie einen benutzerdefinierten AjaxIndicatorAppender in Ihrem customIndicatingAjaxLink besitzt und Sie müssen unter Methode der indicatorAppender außer Kraft zu setzen Pfad der benutzerdefinierten zurückzukehren

Bild
protected CharSequence getIndicatorUrl()