gwt css uibinder разделяет ресурс
Я определил ClientBundle, интерфейс Style и подключил его к моему файлу css с помощью аннотации @source.
У меня есть два вопроса:
когда я использую
<ui:with>
в моем файле uibinder я получаю следующее исключение:Deferred binding result type MyStyle should not be abstract.
Может кто-нибудь объяснить, что происходит? И как я могу правильно включить стиль в моем файле uibinder?Я хотел бы поделиться ресурсом между многими uibinder, не платя штраф за инициализацию стиля каждый раз. Руководство разработчика Gwt по анемии предлагает использовать
UiField(provided=true)
или используя@uiFactory
, Хотя я успешно использовал @uiFactory, чтобы использовать свои собственные виджеты. Я понятия не имею, как использовать @uiFactory для вставки стиля в uiBinder.
Например:
//in pojo
@UiFactory
public MyStyle getMyStyle() {
return myStyle;
}
//in uibinder
<g:Label addStyleNames="{myStyle.defaultLable}"/>
как я могу получить эту работу?
Заранее спасибо.
1 ответ
Я использую следующую конструкцию в файле uibinder:
<ui:with field='res' type="com.example.client.resources.MyResource" />
куда MyResource
интерфейс, содержащий ресурс css:
public interface MyResource extends ClientBundle {
@Source("mycss.css")
MyCssResource css();
}
а также MyCssResource
является:
public interface MyCssResource extends CssResource {
String someStyle();
}
В файле uibinder это используется следующим образом:
<g:TextBox addStyleNames="{res.css.someStyle}" />