如何使用 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 中。这可能是错误的方法,但它有效。
我想从使用 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 中。这可能是错误的方法,但它有效。