我刚刚开始使用gwt,我正在尝试解决以下任务: 我有两个课程,分别是月份和年份。在我的实现课中我有
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?和其他一些地方。
答案 0 :(得分:2)
如果您的类中的某个字段(如果是JS对象将转换为属性),您将更改该值,而不是将组件交换到DOM中。
您需要将新值替换为DOM中的旧值。你这样做的方式很大程度上取决于你的ui.xml。一种可能性是在ui.xml中使用SimplePanel,并使用setWidget设置要显示的相应小部件。