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>

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

但是,我们有一个常量文件(不是 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 模板中引用这个常量文件?

非常感谢

4

1 回答 1

6

我希望这对您有用:1)在您的 Java 类中,为您的样式名称定义一个静态 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 的接口轻松(且优雅地)做到这一点,但我认为这不是您想要的(如果我误解了您的需求,请纠正我,以便我提供更多提示)。

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

于 2013-03-18T18:40:16.927 回答