Я не могу преобразовать int в строку в Vaadin - PullRequest
0 голосов
/ 25 мая 2020

У меня небольшая проблема с Vaadin и Spring Boot. Когда я хочу изменить преобразование int в строку, я получаю эту ошибку. Я знаю, что это, вероятно, тривиальная проблема, но я только начинаю изучать Spring Boot.

com.vaadin.flow.component.textfield. IntegerField@1c7a3814

@Route("main")
public class vaadinapp extends VerticalLayout {
  public vaadinapp() {
    IntegerField integerField = new IntegerField("Age");
    Button buttonName = new Button("Left", new Icon(VaadinIcon.ACADEMY_CAP));
    Label labelName = new Label();

    String integerFieldStr = integerField.toString();

    buttonName.addClickListener(clickEvent -> {
      labelName.setText(integerFieldStr);
    });

    add(integerField, buttonName, labelName);
  }
}

1 Ответ

2 голосов
/ 25 мая 2020

Вызов метода toString объекта integerField вернет вам строковое представление объекта, а не хранимое в нем значение. Вместо этого для получения значения вы можете использовать метод getValue. Примерно так:

public vaadinapp() {
    IntegerField integerField = new IntegerField("Age");
    Button buttonName = new Button("Left", new Icon(VaadinIcon.ACADEMY_CAP));
    Label labelName = new Label();

    buttonName.addClickListener(clickEvent -> {
        String integerFieldStr = 
            Optional.ofNullable(integerField.getValue()) //you need this check since getValue could return null
           .map(String::valueOf)
           .orElse("");
        labelName.setText(integerFieldStr);
    });

    add(integerField, buttonName, labelName);
}

UPD: Я бы также переместил код извлечения значения в слушатель. Спасибо Эри c за этот пункт.

...