4

UiBinder について質問があります。

次の UiBinder ファイルがあります。

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
             xmlns:g="urn:import:com.google.gwt.user.client.ui">
    <g:HTMLPanel>
        <div>
            <g:VerticalPanel>
                <g:Label>Please enter your password:</g:Label>
                <g:FlowPanel>
                    <g:PasswordTextBox ui:field="textbox"/>
                    <g:Button ui:field="button" text="Login" styleName="?????"/>
                </g:FlowPanel>
            </g:VerticalPanel>
        </div>
    </g:HTMLPanel>
</ui:UiBinder>

??? にスタイル名を入れるとうまくいきます。

ただし、すべての css 名を定数として含む定数ファイル (i18n 定数ではない) があります。お気に入り:

public class CSSConstants {
    public static final String CSS_TITLE = "title";

    public static final String CSS_TEXT_NORMAL = "text_normal";
    public static final String CSS_TEXT_ERROR = "text_error";
    public static final String CSS_TEXT_ERROR = "button blue";
    .......
}

UiBinder テンプレートでこの定数ファイルを参照する方法を知りたいですか?

どうもありがとう

4

1 に答える 1

6

これがうまくいくことを願っています: 1) Java クラスで、スタイル名の静的ゲッターを定義します。

public static String getSomeStyle(){}

2) 次のようにスタイル名にアクセスします。

 <ui:with type="package.of.your.class.ClassName" field="yourClass"></ui:with>

<g:Button ui:field="button" text="Login" styleName="{yourClass.getSomeStyle}"/>

これは、targetHistoryToken 値にアクセスするときに正常に機能します。あなたのケースで機能することを願っています。

もちろん、ClientBundle を拡張するインターフェイスを使用して簡単に (そしてエレガントに) 行うことができますが、それが必要だとは思いません (必要性を誤解していた場合は訂正してください。さらにヒントを提供できます)。

(申し訳ありませんが、回答を投稿する前にテストする開発環境がありません)

于 2013-03-18T18:40:16.927 に答える