gwt css uibinder разделяет ресурс

Я определил ClientBundle, интерфейс Style и подключил его к моему файлу css с помощью аннотации @source.

У меня есть два вопроса:

  1. когда я использую <ui:with> в моем файле uibinder я получаю следующее исключение: Deferred binding result type MyStyle should not be abstract. Может кто-нибудь объяснить, что происходит? И как я могу правильно включить стиль в моем файле uibinder?

  2. Я хотел бы поделиться ресурсом между многими 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}" />
Другие вопросы по тегам