我正在开发一个GWT应用程序,当用户点击按钮时,应该会出现带有复选框的表单面板。这些复选框应填充来自异步服务的项目列表。但是当我打开表单面板时,我没有那些复选框。我调试,看到我的服务的结果不是按时到这里,但后来列表已满.. 这是代码:
@Override
public void createBody() {
GWT_ACCESS_ROLE_SERVICE.findByUserId(null, currentSession.getSelectedAccount().getId(), userId, new AsyncCallback<PagingLoadResult<GwtAccessRole>>() {
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
}
@Override
public void onSuccess(PagingLoadResult<GwtAccessRole> result) {
lista = result.getData();
for (GwtAccessRole gwtAccessRole : lista) {
bb = new CheckBox();
bb.setBoxLabel(gwtAccessRole.getRoleName());
}
FormPanel roleFormPanel = new FormPanel(FORM_LABEL_WIDTH);
roleFormPanel.add(bb);
bodyPanel.add(roleFormPanel);
}
});
}
我做错了什么以及为什么我的复选框没有填写?提前谢谢。
编辑:当我调试时,此方法GWT_ACCESS_ROLE_SERVICE.findByUserId显示在表单面板出现后。所以表单面板上传,然后在调试之后转到我的方法并完成所有的工作。
答案 0 :(得分:0)
它应该看起来像这样:
import java.util.logging.Logger;
final Logger log = Logger.getLogger("LOG OUTPUT");
@Override
public void onSuccess(PagingLoadResult<GwtAccessRole> result) {
if (result == null) {
log.info("No data from the server");
return;
}
lista = result.getData();
FormPanel roleFormPanel = new FormPanel(FORM_LABEL_WIDTH);
for (GwtAccessRole gwtAccessRole : lista) {
bb = new CheckBox();
bb.setBoxLabel(gwtAccessRole.getRoleName());
roleFormPanel.add(bb);
// display on the JS console output
log.info("CheckBox added to roleFormPanel");
}
bodyPanel.add(roleFormPanel);
// confirm panel being added
log.info("Panel added to body");
}
.gwt.xml模块将添加以下行:
<inherits name="com.google.gwt.logging.Logging"/>
<set-property name="gwt.logging.enabled" value="TRUE"/>
您没有向表单面板添加任何内容,因为复选框已超出范围。
编辑:添加了日志输出信息
答案 1 :(得分:0)
请注意 FormPanel 是实现 HasOneWidget ,因此如果您尝试将另外一个小部件添加到容器中,它将覆盖它