2016-09-22 4 views
0

Я только начал работать с gwt, и я пытаюсь решить следующую задачу: У меня есть два класса Month и Year, которые расширяют композицию. И в моем классе реализации у меня естьКак заставить виджета перерисовать себя

UiField(provided = true) 
Composite composite; 

Month month; 

Year year; 
... 
//Constructor 
@Inject 
MyClassImpl(){ 
    month = new Month(); 
    year = new Year(); 
    composite = month; 
} 

updateComposite(){ 
    composite = year; 
    logger.fine("composite = " + composite); 
} 

Моя проблема в том, когда я называю updateComposite() метод я вижу на консоли, что он обновляется, но это не перерисовывать на экране. Это похоже на то, что ответ на мой вопрос очень прост, но мне не удалось его найти. Я посмотрел здесь How can I force GWT widget to update? и некоторые другие места.

ответ

2

Вы меняете значение, если поле вашего класса (которое будет переводить на свойство, если объект JS), вы не меняете компоненты в DOM.

Вам нужно поместить новое значение вместо старого в DOM. То, как вы это сделаете, зависит от вашего ui.xml. Одной из возможностей было бы использовать SimplePanel вместо этого в ui.xml и использовать setWidget для установки соответствующего виджета.

+0

Спасибо, я просмотрел исходный код setWidget и увидел, что прикрепляющий виджет к дереву DOM был тем, что я забыл сделать. – Evgen