GWT:如何在UiBinder模板中使用常量

3 java gwt uibinder

我有一个与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>
Run Code Online (Sandbox Code Playgroud)

如果我把样式名称放在???中,它可以正常工作.

但是,我们有一个常量文件(不是i18n常量),它包含所有css名称作为常量.喜欢:

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";
    .......
}
Run Code Online (Sandbox Code Playgroud)

我想知道如何在UiBinder模板中引用这个常量文件?

非常感谢

Laa*_*ssi 5

我希望这对你有用:1)在你的Java类中,为你的样式名定义一个静态getter:

public static String getSomeStyle(){}
Run Code Online (Sandbox Code Playgroud)

2)访问您的样式名称如下:

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

<g:Button ui:field="button" text="Login" styleName="{yourClass.getSomeStyle}"/>
Run Code Online (Sandbox Code Playgroud)

这在访问targetHistoryToken值时工作正常,我希望它适用于您的情况.

当然,你可以使用扩展ClientBundle的界面轻松(优雅地)做到这一点,但我不认为这是你想要的(如果我误解了你的需要,请纠正我,所以我可以提供更多提示).

(抱歉,在发布我的答案之前,我没有开发环境来测试它)