我有一个与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模板中引用这个常量文件?
非常感谢
答案 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的界面轻松(优雅地)做到这一点,但我认为这不是你想要的(如果我误解了你的需要,请纠正我,所以我可以提供更多提示)。
(抱歉,我没有开发环境来测试它,然后才发布我的答案)