2009-02-16 5 views
8

Я изучаю GWT и начал обдумывать его. Я нахожусь в точке, где мой код становится беспорядочным спагетти, поэтому я возвращаюсь и разлагаю разумные фрагменты как композиты. Первая проблема, с которой я столкнулся, заключалась в том, что моя поддержка инструмента не предоставила новому классу Composite метод initWidget(). Он включил конструктор по умолчанию.
На данный момент я просто заполнил свой переопределенный метод initWidget() с вызовом super(initWidget(w)). Мой проект компилируется и работает как ожидалось, хотя я чувствую, что мне что-то не хватает.GWT Composite best practices

Что следует учитывать при переопределении init и что, если что-то мне нужно разместить в конструкторе. Есть ли что-нибудь еще, что мне нужно знать, или это просто сходит с обычной старой Java после этого?

Уточнение. Мне пришло в голову, что на этот вопрос могут быть разные ответы в зависимости от того, собираетесь ли вы выпускать упомянутые классы Composite как часть библиотеки или просто часть вашего автономного приложения. В частности, я не намерен разрабатывать внешне полезные компоненты (главным образом потому, что я настолько зеленый в этой конкретной технологии.)

Спасибо!

ответ

7

Я не уверен, что понимаю, что вы пытаетесь сделать. Но для всех композитов, которые я написал, я никогда не переопределял метод initWidget. Поскольку сам Composite не должен быть инициализирован с конструктором, т.е. нет необходимости называть супер() мои конструктор виджетов проходящих композиционные выглядеть примерно так:

public mywidget() { 
    SomePanel p = new SomePanel(); 
    .... 
    initWidget(p); 
} 

В качестве лучшей практики, имо, только виджет расширения Composite должен назвать его «собственным» initWidget.

+0

Я думаю, что это, вероятно, ответ на весь набор проблем, связанных с пользовательскими виджетами. Я также попадал в ситуацию, когда инструменты gui не отображали многие мои пользовательские виджеты, скорее всего, потому, что ни мой конструктор, ни вызовы init не были правильными. Я проверю это, когда вернусь домой ... thx –

2

"GWT Conference: Best Practices for Building Libraries" дает пару советов. Вы также должны посмотреть на источник GWT и на источник одной из библиотек для GWT (например, gwt-ext)

[EDIT] Я только что увидел другой вариант: suco. Из описания:

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

+0

да, я тоже удалил старый комментарий ... –