虽然我不认为这是一个Vaadin特定问题。我真正需要做的就是重新加入未来在完成时创建的主题。
(ClickHandler) (event) -> {
log().debug( "current Thread {}", Thread.currentThread().getId() );
viewModel.generateFileDownload().thenAccept( this::download );
// needs to continue to this immediately, note: there are similarly vaadin reasons why you can't just block here.
button.setEnabled( false );
}
private void download( final File file ) {
// do stuff that needs to happen in the original thread
log().debug( "current Thread {}", Thread.currentThread().getId() );
button.setEnabled( true );
}
我需要这些线程ID是相同的,显然我可以重做这个。我知道有一个加入,但现在确定当我不想重新加入直到完成时这对我有什么帮助?
答案 0 :(得分:0)
对于您的具体问题,您应该只使用
Button button = new Button("Download");
button.setDisableOnClick(true); //after creating the button
和
button.setEnabled(true); //after using the button, in click handler
请注意,这是Button
中的一项功能。对于更高级的案例,您应该使用Vaadin的@Push
功能。