22

初めてGWTClientBundleを使用しています。私はそれを拡張するインターフェースを書きました、そしてここにコードがあります:

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();
}

私の質問は、これらのリソース(この場合は画像)がどこにあるかを正確に知るにはどうすればよいですか。それらを配置する必要があります:a)インターフェイスと同じディレクトリに-(醜い)?b)決して変更できない特定のディレクトリにありますか?c)必要なディレクトリにありますが、それを指定するメカニズムが必要です-(すばらしいでしょう)?

ありがとうございました。

4

2 に答える 2

24

com.example.project.resource私は通常、リソース( ) の新しいパッケージを作成し、ClientBundleインターフェイスと適切なリソースをそこに配置します(1つのディレクトリのように一緒に)-これは1つのJavaファイルと多数の画像であり、さらに分離する必要はありません、IMHO。

@Source("path")リソースへのパスについては、アノテーションを介して渡すことができます。たとえば、ClientBundleインターフェースがにcom.example.project.resourceあり、画像がにcom.example.project.imagesある場合は、と記述し@Source("../images/shim.gif")ます。絶対パスを使用することもできますが、それらを静的変数に格納し、リソース間で共有するようにしてください。そうすれば、簡単にオーバーライドできます;)

于 2010-08-10T12:05:51.080 に答える
3

イゴールのポイントに似ています:

com.yoursite.resources: YourClientBundle.java
com.yoursite.resources.css: YourCssResource.java
com.yoursite.resources.images: image files here

ここで重要なのは、リソース(CSS / Image / Text)を消費しない場合、GWTコンパイラーはそれを無視するということです。これにより、アプリケーションがホルダーを取得し、何百もの画像があり、どれが使用され、どれが使用されていないかわからない場合の戦争の肥大化を防ぎます。

public / imagesフォルダーにすべてをドロップするオプションを使用すると、使用されているかどうかに関係なく、すべてのアイテムがアプリケーション戦争に含まれます。

于 2013-03-06T15:09:24.090 に答える