Cómo ClientBundle en GWT?
-
27-09-2019 - |
Pregunta
Estoy usando GWT ClientBundle por primera vez. Escribí interfaz que se extiende y aquí está el código:
package edu.etf.fuzzy.client.login;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.ImageResource;
public interface Resources extends ClientBundle {
@Source("logo_federacija.jpg")
ImageResource logo();
@Source("shim.gif")
ImageResource shim();
}
Mi pregunta es: ¿Cómo puedo saber exactamente dónde se puede encontrar estos recursos (imágenes en este caso). ¿Debo poner: a) en el mismo directorio que la interfaz - (feo)? b) en algún directorio específico que no puede ser cambiado? c) en el directorio que quiero, pero no debe haber mecanismo para especificar que - (sería genial)
?Gracias.
Solución
Por lo general crear un nuevo paquete de recursos (com.example.project.resource
) y poner la interfaz ClientBundle
y los recursos apropiados allí (en conjunto, como en en un directorio) - es un archivo Java además de un montón de imágenes, sin necesidad de una separación adicional, En mi humilde opinión.
En cuanto a las rutas de acceso a los recursos - se pueden pasar a través de la anotación @Source("path")
. Por ejemplo, si usted tiene su interfaz de ClientBundle
en com.example.project.resource
e imágenes en com.example.project.images
, entonces sería escribir @Source("../images/shim.gif")
. Probablemente se podría utilizar rutas absolutas, pero asegúrese de que los almacena en una variable estática y compartir con los recursos, por lo que se puede reemplazar fácilmente;)
Otros consejos
Al igual que en los puntos de Igor:
com.yoursite.resources: YourClientBundle.java
com.yoursite.resources.css: YourCssResource.java
com.yoursite.resources.images: image files here
La clave aquí es que si usted no consume un recurso (CSS / imagen / texto), el compilador GWT lo ignorará. Esto evita que guerra hinchazón como su aplicación obtiene titular y tienes cientos de imágenes y no están seguros de que se utilizan y cuáles no lo son.
Si se utiliza la opción de dejar caer todo en los pública / images carpeta, a continuación, todos los elementos se incluirá en su guerra aplicación, independientemente de si se utilizan.