いくつかのレガシー コードを GWT 2 に更新する作業を行っていますが、奇妙な動作が発生しています。gwt ドキュメントに従って ClientBundle を拡張するカスタム インターフェイスがあります。そのバンドル内で、モジュールのさまざまな .css ドキュメントを指すようにいくつかの CssResources を定義します。モジュールを実際に初期化するときに問題が発生します。各 CssResource への静的参照を取得し、ensureInjected() を呼び出すコードがイニシャライザにいくつかあります。問題は、最初の呼び出しだけが実際に何かを行うことです。後続の呼び出しは無視されているようで、css スタイルがアプリケーションに追加されていません。1 つのモジュールで複数の CSS ドキュメントを操作するには、どうすればよいですか?
CssBundle.java
public interface CssBundle extends ClientBundle {
public static final CssBundle INSTANCE = (CssBundle) GWT.create(CssBundle.class);
/* CSS */
@Source("mypath/public/Client.css")
public ClientCss mainCSS();
@Source("mypath/resources/css/mini/ext-all.css")
public ExtAllCss extAllCSS();
}
ClientCss.java
public interface ClientCss extends CssResource {
String applicationTitle();
String branding();
String bugReportDirections();
@ClassName("Caption")
String caption();
}
ExtAllCss.java
public interface ExtAllCss extends CssResource {
@ClassName("close-icon")
String closeIcon();
@ClassName("close-over")
String closeOver();
@ClassName("col-move-bottom")
String colMoveBottom();
}
MyModule.java
public class MyModule extends Composite
{
public void initialize()
{
//this css shows up in the client
CssBundle.INSTANCE.mainCSS().ensureInjected();
//this does nothing
CssBundle.INSTANCE.extAllCSS().ensureInjected();
}
}