質問
GWT ClientBundleを初めて使用しています。私はそれを拡張するインターフェイスを書きました、そしてここにコードがあります:
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)私が望むディレクトリにありますが、それを指定するメカニズムがあるはずです - (素晴らしいでしょう)?
ありがとうございました。
解決
私は通常、リソース用の新しいパッケージを作成します(com.example.project.resource
)そして、 ClientBundle
インターフェイスと適切なリソース(1つのディレクトリのように一緒に) - これは1つのJavaファイルと多数の画像であり、さらなる分離が必要ありません。
リソースへのパスについては、それらを経由して渡すことができます @Source("path")
注釈。たとえば、あなたが持っている場合 ClientBundle
インターフェイスイン com.example.project.resource
と画像 com.example.project.images
, 、それからあなたは書くでしょう @Source("../images/shim.gif")
. 。おそらく絶対的なパスを使用することもできますが、それらを静的変数に保存し、リソース間で共有してください。
他のヒント
イゴールのポイントに似ています:
com.yoursite.resources: YourClientBundle.java
com.yoursite.resources.css: YourCssResource.java
com.yoursite.resources.images: image files here
ここで重要なのは、リソース(CSS/画像/テキスト)を消費しない場合、GWTコンパイラがそれを無視することです。これを防ぎます 戦争の膨満感 アプリケーションが所有者を取得し、何百もの画像があり、どちらが使用されていないかがわかりません。
すべてをドロップするオプションを使用する場合 パブリック/画像 フォルダー、その場合、すべてのアイテムが使用されているかどうかに関係なく、アプリケーション戦争に含まれます。