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

时间:2013-03-18 17:52:06

标签: 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>

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

但是,我们有一个常量文件(不是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";
    .......
}

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

非常感谢

1 个答案:

答案 0 :(得分:5)

我希望这对你有用: 1)在Java类中,为style-name定义一个静态getter:

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的界面轻松(优雅地)做到这一点,但我认为这不是你想要的(如果我误解了你的需要,请纠正我,所以我可以提供更多提示)。

(抱歉,我没有开发环境来测试它,然后才发布我的答案)