Как именно переопределить CssResource

В настоящее время у меня есть приложение, использующее CssResource в gwt, подобное этому ...

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 поддержки суперклассов?


person benstpierre    schedule 10.05.2011    source источник


Ответы (1)


Я столкнулся почти с этой проблемой. Решение, которое я придумал, прочитав пример @Import в документации GWT выглядит следующим образом. В вашем MyPinkThemedClientBundle вам нужно определить метод css () как:

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

Если вы просто переопределяете уже определенные записи CSS и не создаете какие-либо новые, которые должны быть доступны в вашем коде, тогда вам не понадобится тип MyPinkCssResource.

person David Sykes    schedule 24.08.2011
comment
Я получаю сообщение об ошибке: в источнике аннотации отсутствует значение атрибута, когда я пытаюсь создать 2 файла css, разделенных запятыми. Пробовал GWT 2.5.1 и 2.6.0. На самом деле это исходит от компилятора Java под Netbeans, а не от компилятора GWT. Были ли у вас такие же проблемы? - person Budric; 16.04.2014
comment
Помещение значений в фигурные скобки (поскольку аннотация определяется как String []), например @Source ({main.css, myPinkVersion.css}), позволяет избавиться от ошибки компилятора java. Я не уверен, как вы, ребята, компилируете его в своей системе и не получаете этих ошибок. - person Budric; 16.04.2014
comment
@Budric - спасибо за информацию. Я обновил ответ. - person David Sykes; 23.04.2014