Vaadin이 GridLayout의 디스플레이를 제때에 업데이트하지 않는 문제가 있습니다. GridLayout은 업로드 된 모든 파일을 나열하는 데 사용하는 VerticalLayout의 구성 요소입니다. 파일을 업로드 할 때 서버 쪽에서 모든 것이 잘 작동하지만 서버에 새 요청을 만들 때까지 클라이언트가 변경 사항을 보지 못합니다 (다른 파일을 업로드하거나 다른 이벤트를 트리거하거나 업데이트가 잘 작동하지 않음). 이미 즉시에 GridLayout과 설정뿐만 아니라 더러운하지만 아무것도로 전체 구성 요소를 표시하는 시도Vaadin GridLayout이 올바르게 업데이트되지 않습니다.
public class ListedMultiFileUpload extends VerticalLayout {
private MultiFileUpload multiFileUpload;
private GridLayout fileList;
public ListedMultiFileUpload(UploadFinishedHandler uploadFinishedHandler, UploadStateWindow uploadStateWindow) {
multiFileUpload = new MultiFileUpload(uploadFinishedHandler, uploadStateWindow);
fileList = new GridLayout(2, 5);
fileList.setImmediate(true);
addComponents(multiFileUpload, fileList);
}
public SmartMultiUpload getSmartUpload() {
return multiFileUpload.getSmartUpload();
}
public void addFile(String fileName, final Runnable fileRemover) {
final Label label = new Label(fileName);
final Button button = new Button("X");
button.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
fileList.removeComponent(label);
fileList.removeComponent(button);
fileRemover.run();
}
});
fileList.addComponent(label);
fileList.addComponent(button);
markAsDirtyRecursive();
}
}
이 차이를 만들 것 : 여기
문제가있는 GridLayout과를 포함하는 구성 요소입니다.기본적으로 나는 여기서 뭔가 잘못하고 있습니까? 아니면 클라이언트가 구성 요소를 업데이트하도록 강제 할 수있는 "좋은"방법이 있습니까?
[푸시] (https://vaadin.com/docs7/-/part7/framework/advanced/advanced-push.html)를 사용하고 있습니까? – Morfic
@ Morfic 아마 잘 될 것입니다. Vaadin은 push addon없이 작동하도록 설계되었으므로 다른 방법이 있어야한다고 생각합니다. – kalsowerus