3

目前我有一个像这样在 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 文件的效果?

4

1 回答 1

6

我几乎完全遇到了这个问题。我在阅读GWT 文档中的 @Import 示例后提出的解决方案如下。在您 MyPinkThemedClientBundle需要将 css() 方法定义为:

@Source({"main.css", "css/**mainPinkVersion**.css"})
MyCssResource css();

如果您只是覆盖已定义的 CSS 条目,而不是创建任何需要在代码中访问的新条目,那么您将不需要 MyPinkCssResource 类型。

于 2011-08-24T00:29:44.203 回答