GWT: Использование UIBinder с шаблонами HTML ... как заставить его работать? - PullRequest
4 голосов
/ 29 января 2011

В настоящее время я пытаюсь использовать функциональность UWBinder GWT, но безуспешно. Я прочитал документацию несколько раз, но она НЕ содержит полной истории. Может быть, вы можете помочь мне.

Вот что я знаю до сих пор:

1) Мне нужно создать, например. файл HelloWorld.ui.xml с некоторым макетом виджета. 2) Мне нужно создать соответствующий класс HelloWorld.

Вот что я не могу найти информацию:

A) Где я могу поместить файл HelloWorld.ui.xml, чтобы GWT мог его найти?

B) Как добавить свой компонент HelloWorld, например, в панель?

Документация очень скудная и определенно написана кем-то, кто уже знает слишком много о GWT, чтобы увидеть, чего не знает новичок.

Ответы [ 3 ]

2 голосов
/ 29 января 2011

Этот обзор объясняет все: http://code.google.com/webtoolkit/doc/latest/DevGuideUiBinder.html

  1. Вы помещаете HelloWorld.ui.xml в ту же папку, что и файл HelloWorld.java.
  2. Как это (взято из ссылки выше):

    public class HelloWorld extends UIObject { // Could extend Widget instead
        interface HelloWorldUiBinder extends UiBinder<DivElement, HelloWorld> {}
        private static HelloWorldUiBinder uiBinder =  
              GWT.create(HelloWorldUiBinder.class);
    
        // div element created via UiBinder
        private DivElement divElement;
    
        public HelloWorld() {
            // createAndBindUi 
            divElement = uiBinder.createAndBindUi(this);
            // now you can add created DivElement to your panel
        }
    };
    
2 голосов
/ 29 января 2011

A) Вам нужно поместить файл HelloWorld.ui.xml в тот же пакет, что и класс виджетов, который содержит логику для этого файла ui.xml. Имя класса должно быть HelloWorld (для простоты я говорю, что вам нужно использовать то же имя, но с помощью кода можно использовать другое имя для файла ui.xml.)

B) Ваш класс HelloWorld должен быть классом, расширяющим виджет. Как и любой «обычный» виджет, он может быть добавлен на любую панель.

Вот код для привязки HelloWorld.ui.xml к вашему HelloWorld классу виджетов:

public class HelloWorld extends Composite /*or extend any widget you want*/ {
    //This defines an interface that represents this specific HelloWorld.ui.xml file.
    interface MyUiBinder extends UiBinder<Widget, HelloWorld> {}

    // This code is for GWT so it can generate the code from your HelloWorld.ui.xml
    private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);

    //Constructor
    public HelloWidgetWorld() {
        // This binds the HelloWorld.ui.xml with this widget
        initWidget(uiBinder.createAndBindUi(this));
        ...
    }

    ...
}
1 голос
/ 29 января 2011

Вот два полных урока и примеры HelloWorld:

1) для пользовательского интерфейса Binder с управлением GWT: http://blog.jeffdouglas.com/2010/01/19/gwt-uibinder-hello-world-tutorial/

2) для пользовательского интерфейса Binder с простым HTML: К сожалению! StackOverflow не позволяет мне публиковать две гиперссылки. Поэтому я опубликую второй в отдельном ответе или в комментарии к этому.

...