如何使用 Vaadins @Route 注释从 Class 调用 Getter

How to call a Getter from a Class with Vaadins @Route Annotation

我想从使用 Vaadins @Route 注释的 Class 访问 getter。

实例化 class 不起作用,自动装配也不行 这是我的切入点。从这里我想从下一个 class 中的按钮调用 getter 以添加 actionlistener(clicklistener) 以进一步利用它的数据 window

@SpringBootApplication
public class App 
{

    @Autowired
    Main main;

    public static void main( String[] args )
    {
        SpringApplicationBuilder builder = new SpringApplicationBuilder(App.class);
        builder.headless(false);
        ConfigurableApplicationContext configurableApplicationContext = builder.run(args);
        View view = new View();
    }
}

这是实现 Vaadin 的 class。这里是我要调用的getter

@Route("index")
public class Main extends VerticalLayout {
    VerticalLayout buttons = new VerticalLayout();
    TextField field = new TextField();
    Button button = new Button("commit change");

    public Main() {
        button.addClickListener(buttonClickEvent -> {
            if (StringUtils.isNotEmpty(field.getValue())) {
                Checkbox checkbox = new Checkbox(field.getValue());
                buttons.add(checkbox);
                field.setValue("");
            }
        });


        add(
                new H1("Control it!"),
                buttons,
                field,
                button

        );

    }

    public TextField getField() {
        return field;
    }

即使您可以在 Main class 中自动装配,如果您想将它用作 bean,您需要添加 Spring @Component(或 Vaadin 的@SpringComponent) 注释,以及 @UIScope 用于 return bean 的正确实例。

我找到了避免调用 getter 的方法

我也制作了应该从 Vaadin 获取数据的 Gui 应用程序 @Component 并将其@Autowired 到 Main 中。这可能是错误的方法,但它有效。