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

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

3 голосов
/ 05 октября 2011

Я определил 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 Ответ

7 голосов
/ 05 октября 2011

Я использую следующую конструкцию в файле uibinder:

<ui:with field='res' type="com.example.client.resources.MyResource" />

Где MyResource - это интерфейс, содержащий ресурс css:

public interface MyResource extends ClientBundle {
  @Source("mycss.css")
  MyCssResource css();
}

и MyCssResource is:

public interface MyCssResource extends CssResource {
    String someStyle();
}

В файле uibinder это используется следующим образом:

<g:TextBox addStyleNames="{res.css.someStyle}" />
...