У меня есть страница с формой фильтра, несколькими кнопками и большой сеткой. Я могу искать данные на основе формы фильтра и отображать данные в сетке. Поиск данных обеспечивает поток, это может занять от секунд до минут. Когда я хочу нажать кнопку, чтобы остановить поиск (в основном, чтобы остановить поток), действие выполняется всегда после завершения потока. Но мне нужно выполнить событие щелчка во время работы потока. Кто-нибудь знает, как это сделать? :)
Пользовательский интерфейс имеет @Push (PushMode.MANUAL), и нажатие работает нормально
Упрощенный код:
@SpringComponent
@UIScope
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class DistraintSearchComponent extends CustomComponent {
@Autowired
private Service service
private Button searchButton = new Button("Search");
private Button stopButton = new Button("Stop");
private Thread searchThread;
public void init(){
searchButton.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
searchThread = new Thread(new Runnable() {
@Override
public void run() {
List<Results> results = service.findByFilter(filter); //this can take some time
refreshGrid(results);
getUI().push();
}
});
searchThread.start();
}
});
stopButton.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
searchThread.interrupt();
}
});
}
}
Спасибо