Nel mio progetto GWT grande, ho un ClienteBundle per le mie risorse immagine. Ho definito circa 40 file GIF al suo interno. (Dimensione di ogni file è di circa 5 KB)Schema di divisione codice GWT per risorse immagini ClienteBundle
Poi ho creare una classe con un metodo statico per impostare l'immagine propria del obj che ottengono come parametri:
public static void setImageFromId (String id,final Image img) {
//for 1.gif
if (id.equals("1")) {
GWT.runAsync(new RunAsyncCallback() {
@Override
public void onFailure(Throwable reason) {}
@Override
public void onSuccess() {
img.setResource(MyImages.INSTANCE.img1()); //MyImages is the ClientBundle
}
});
}
}
//for 2.gif
if (id.equals("2")) {
GWT.runAsync(new RunAsyncCallback() {
@Override
public void onFailure(Throwable reason) {}
@Override
public void onSuccess() {
img.setResource(MyImages.INSTANCE.img2()); //MyImages is the ClientBundle
}
});
}
//etc. for other images 3, 4, 5, ...
//...
}
che voglio sapere è buon motivo per la divisione del codice? perché se non lo faccio tutti i 40 file verranno memorizzati nella cache del browser client in prima chiamata, ma non è necessario.
RGDS
Non riesco a capirti! potresti per favore dare un esempio? Se non lo faccio, con la prima chiamata a "setImageFromId (..)" tutte le risorse vengono scaricate come x.cache.js (40 * 5 KB = 200 KB) mentre ne avevo solo bisogno uno (5 KB) – Nav
che ho modificato la mia risposta è, si spera, più chiara. Fammi sapere se non lo è, o se trovi che non funziona per te. –
vuoi dire in questi casi dovrei ottenere immagini da setUrl non setResource? – Nav