我正在使用Vaadin 14.0.3。我有一个方法MainLayout
的类someCode
。我将此类用作另一个名为MainView
的类的布局。是否可以在someCode
中使用方法MainView
?例子如下:
public class MainLayout {
public void someCode() {
}
}
@Route(value = "main", layout = MainLayout.class)
public class MainView {
}
谢谢!
最佳答案
有可能,但这不一定是一个很好的实践,因为它紧密地结合了各个类。
就是说,如果您使用的是Spring,则可以使MainLayout成为UIScoped Spring组件,并在MainView中对其进行自动装配。
否则,您将必须使用getParent()方法并将结果转换为MainLayout。
@Override
public void onAttach(AttachEvent event) {
Optional<Component> parent = getParent();
while (parent.isPresent()) {
Component p = parent.get();
if (p instanceof MainLayout) {
MainLayout main = (MainLayout) p;
main.hello();
}
parent = p.getParent();
}
}