0

いくつかのレガシー コードを 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();
    }
}
4

1 に答える 1