我希望我的 uiBinder 使用 ClientBundle,它将提供一些运行时自定义标签。一种 TextResource 但不是来自文本文件!
我尝试使用 GwtCreateResource 但从 DevGuide看来这是不可能的。我对吗 ?(create() 和 name() 是唯一可用的方法)我想要实现的是这样的:
客户端捆绑:
public interface MyWidgetResources extends ClientBundle {
GwtCreateResource<WidgetLabels> labels();
@Source("lol.css")
CssResource style();
}
标签类:
public final class MyWidgetLabels {
public String title() {
return load("mywidget-title");
}
public String banner() {
return load("mywidget-banner");
}
private String load(String key) {
// load from external..
}
}
uiBinder:
<ui:with type="com.package.MyWidgetResources" field="res"/>
<gwt:SimplePanel>
<gwt:Label text="{res.labels.title}"></gwt:Label>
<gwt:Label text="{res.labels.banner}"></gwt:Label>
</gwt:SimplePanel>
我的代码已经看起来像这样但res.label.title
不起作用,因为 GwtCreateResource 只能用作类实例化器 ( res.labels.create().title()
)。
有没有适合我的解决方案?也许使用自定义ResourceGenerator?