У меня есть простой Vaadin GUI, который я хотел бы подключить к моему Rest API на локальном хосте: 8080:
@Route("hello")
public class EmployeeGui extends VerticalLayout {
private final WebClient webClient = WebClient.create("http://localhost:8080");
public EmployeeGui() {
TextField textEmployee = new TextField("Give id of user");
Button buttonOK = new Button("OK");
Label label = new Label();
buttonOK.addClickListener(buttonClickEvent -> {
this.webClient.get()
.uri(uriBuilder -> uriBuilder
.path("/employee/{id}")
.build(textEmployee.getValue()))
.retrieve()
.bodyToMono(EmployeeTo.class)
.subscribe(emp -> {
label.setText(emp.getName());
});
});
add(textEmployee,buttonOK, label);
}
}
На localhost: 8080 работает с моим серверным приложением, которое дает мне REST API для извлечения некоторых данных из БД.
В текстовое поле мы можем ввести идентификатор пользователя и затем нажать кнопку ОК. После этого в ярлыке указываем имя пользователя. К сожалению, я получил исключение (в строке label.setText(emp.getName());
):
java .lang.IllegalStateException: невозможно получить доступ к состоянию в VaadinSession или UI без блокировки сеанса.
Я понял это, но как я могу пропустить эту проблему? Как я могу ввести идентификатор пользователя, а затем вернуть атрибуты пользователя для метки после нажатия кнопки ОК?