¿Dónde pongo archivos estáticos para la aplicación GWT?¿Carpeta de guerra o carpeta pública?

StackOverflow https://stackoverflow.com/questions/1502166

Pregunta

Tengo algunos archivos JavaScript, un archivo HTML principal, un archivo CSS principal y algunos archivos CSS que se importan al archivo principal.

Entiendo que puedo colocar archivos estáticos en dos lugares:a) la carpeta 'guerra';o b) la carpeta 'pública'.

¿Cuál es el mejor lugar para guardar mis archivos estáticos?¿Se tratan las dos ubicaciones de manera diferente?¿Existe una "mejor práctica" sobre este tema?

¿Fue útil?

Solución

La diferencia entre las 2 ubicaciones es que el compilador gwt copia los archivos de las carpetas públicas a la carpeta 'su módulo' en la carpeta 'war'.Esto significa que si implementa la 'guerra' (por ejemplo, a través del complemento de Google en el motor de aplicaciones de Google), los archivos de la carpeta 'pública' no están en el nivel superior.

Por ejemplo, si tiene un index.html en la carpeta 'pública' con un módulo gwt llamado 'mymodule' y lo implementa en www.example.com, tendrá el siguiente aspecto, deberá acceder a él a través de:

www.example.com/mymodule/index.html

Si tiene index.html en la carpeta 'war', obtendrá:

www.example.com/index.html

Resumiendo.Su página de destino debe estar en la carpeta "guerra".Los archivos de recursos utilizados por la página de destino también se pueden almacenar aquí (css, imágenes).Cualquier otro archivo de recursos al que se haga referencia en cualquier archivo de módulo gwt (o código, como imágenes) debe almacenarse en la carpeta 'pública' relacionada con el módulo gwt.

Otros consejos

La nueva forma de trabajar en GWT es utilizar la carpeta de guerra.

Sin embargo, si usted proyecta es una librería de widgets reutilizable que se utiliza en una aplicación GWT, entonces debería poner los recursos en la carpeta pública. El compilador se asegurará de que los archivos se incluyen automáticamente en el paquete generado.

A mi entender, que depende de sus necesidades, pero vamos a empezar a hablar ejemplo primero ...

(debe ser GWT 2.6.0) sobre este que es incorrecta o al menos incompleta / confuso. Tal como lo veo ( No soy un gurú así que por favor me corrija si mis investigaciones están equivocados! ) Estoy buscando en el siguiente Ejemplo de estructura proj

myproj/
  src/my/gwtproj/
     client/
       img/
         foo1.png
       AppClientBundle.java
       foo2.png
     public/
       img/
         foo3.png
       foo4.png
  war/
    img/foo5.png
    foo6.png
  .classpath
  .project

Imaginemos que puede (o no) que hacer referencia a dichos recursos en alguna de las interfaces AppClientBundle (u otro marco de referencia de aplicación):

interfaces AppClientBundle extends ClientBundle {

  @Source("img/foo1.png")
  ImageResource fooImg();
}

A continuación, se parece a dependen de sus requisitos , por ejemplo:.

  • R.A) estos recursos (como imágenes) son referido en el código de la aplicación , por ejemplo en nuestra interfaz AppClientBundle a través de anotaciones @Source
  • R.B.) estos recursos han de ser agrupados por carpetas , por ejemplo, foo2.png vs img/foo1.png
  • R. C) estos recursos deben estar disponibles fuera algún camino específico contexto URL de la aplicación, por ejemplo, si se utiliza como librería de widgets, por ejemplo http://host1/gwtapp1/foo4.png vs http://host1/gwtapp2/foo4.png
  • R.d) estos recursos necesita ser aplicación independiente (por ejemplo externamente) URL con referencia a, por ejemplo, http://host1/gwtapp1/foo4.png vs http://host1/foo6.png

Esto es lo que uno puede hacer ( Posibilidades ) y es implicaciones en relación con R * arriba:.

  • P.1) ( generalmente se recomienda como la veo ) poner muy bien recursos de carpetas-estructurado bajo my.gwtproj.client (en este ejemplo, foo1.png )
    • @Source("img/foo1.png")... esta manera funciona bien
    • en la documentación anterior que atendemos sobre algunos carpeta public (en mi caso my.gwtproj.public), pero la creación como un paquete en Eclipse no me permite esto (ya que public es una aplicación Java reservada palabra clave , pero su creación a través de la vista Navigator obras)
      • Sin embargo, de esta manera el @Source anterior no funciona (probablemente porque es un problema con la ubicación relativa del sistema de archivos AppClientBundle)
      • , sin embargo, si el recurso debe estar disponible al público bajo el contexto de aplicación uno puede tener que hacerlo a través de esta carpeta public
  • P.2) put recursos "no agrupados" directamente bajo myproj/war , por ejemplo projdir/war/foo6.png
    • esta manera se puede utilizar / se encuentra dentro de anotaciones, por ejemplo, @Source
    • y se puede hacer referencia fuera de la aplicación en sí a través de, por ejemplo, http://host1/foo6.png
  • P.3) put recursos de carpetas-estructurada bajo myproj/war , por ejemplo projdir/war/img/foo5.png
    • en contraste con P.2) @Source("img/foo5.png") No trabajaría nunca
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top