因为我的Detail显示的内容是关联entity的,所以想知道当entity的属性值发生改变的时候,怎么刷新Detail的内容?
如果是手动隐藏详情再显示详情,详情的内容会更新
如果用编程的方式
table.setDetailsVisible(e, false);
table.setDetailsVisible(e, true);
这样不能刷新详情
因为我的Detail显示的内容是关联entity的,所以想知道当entity的属性值发生改变的时候,怎么刷新Detail的内容?
如果是手动隐藏详情再显示详情,详情的内容会更新
如果用编程的方式
table.setDetailsVisible(e, false);
table.setDetailsVisible(e, true);
这样不能刷新详情
按照英文论坛的回复,我刚刚试了试,下面的代码是可以的:
protected Component getContent(Veterinarian entity) {
Label<String> content = uiComponents.create(Label.TYPE_STRING);
content.setHtmlEnabled(true);
content.setId("contentLabel");
Label<String> lastNameLabel = uiComponents.create(Label.TYPE_STRING);
lastNameLabel.setValueSource(new ContainerValueSource<>(veterinariansDc, "lastName"));
StringBuilder sb = new StringBuilder();
sb.append("<b>Full name</b><br>")
.append(entity.getFirstName() + " " + lastNameLabel.getRawValue() + "<br><br>")
.append("<b>Country</b><br>")
.append("country" + "<br><br>")
.append("<b>City</b><br>")
.append("city");
content.setValue(sb.toString());
return content;
}
@Subscribe(id = "veterinariansDc", target = Target.DATA_CONTAINER)
public void onVeterinariansDcItemChange(final InstanceContainer.ItemChangeEvent<Veterinarian> event) {
// 这两个还是需要的。
veterinariansTable.setDetailsVisible(event.getItem(), false);
veterinariansTable.setDetailsVisible(event.getItem(), true);
}