目前我在gwt中使用CssResource的应用程序就像这样......
interface MyClientBundle extends ClientBundle{
@Source("images/one.png")
Image someImageThatAlwaysLooksTheSame();
@Source("images/two.png")
Image someImageThatDependingOnTheClientThemeChanges();
@Source("css/main.css")
MyCssResource css();
}
然后是CssResource接口
interface MyCssResource extends CssResource{
String someStyleThatNeverChanges();
String someStyleThatChangesDependingOnTheClient();
}
如果我覆盖MyClientBundle来创建和界面名为MyPinkThemedClientBundle
interface MyClientBundle extends ClientBundle{
@Source("images/one.png")
Image someImageThatAlwaysLooksTheSame();
@Source("images/**twoPinkVersion**.png")
Image someImageThatDependingOnTheClientThemeChanges();
@Source("css/**mainPinkVersion**.css")
MyPinkCssResource css();
}
当然,MyPinkCssResource扩展了MyCssResource
interface MyPinkCssResource extends MyCssResource{
}
我遇到的问题是,当我尝试编译它时,GWT编译器抱怨“css / mainPinkVersion.css”缺少样式名称“someStyleThatNeverChanges”。我原以为cssresource接口会继承其超类的后备css文件。如果不是这种情况,是否有可能实现扩展CssResource并仅覆盖您关心的类的效果,但是否则使用超类的支持.css文件?
答案 0 :(得分:6)
我几乎遇到了这个问题。我在阅读the @Import example in the GWT documentation后想出的解决方案如下。在MyPinkThemedClientBundle
中,您需要将css()方法定义为:
@Source({"main.css", "css/**mainPinkVersion**.css"})
MyCssResource css();
如果您只是覆盖已经定义的CSS条目,而不是创建需要在代码中访问的任何新条目,那么您将不需要MyPinkCssResource类型。