有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Vaadin 7在组件之间触发自定义事件

我想创建自定义事件,并在视图的某些部分激发它们,以便更新/删除/刷新视图的其他部分

我尝试过扩展组件。事件和组件。但它不起作用。我认为事件和侦听器必须限于同一个组件实例

这可以用Vaadin 7完成吗

基本上,我希望分离视图,并在组件之间提供轻松的通信。我也在用Spring和Vaadin。如果你除了观察者模式之外还有更好的想法,我也将不胜感激

谢谢!


共 (1) 个答案

  1. # 1 楼答案

    你可以使用EventRouter。但我不使用它

    也可以使用ObjectProperty

    此对象可以在值更改时触发事件。 例如:

    public class MyApplication extends UI{
      private ObjectProperty<MyState> myState= new ObjectProperty<MyEvent>(new MyState());
    
      public ObjectProperty<MyState> getMyState(){return myState;}
    
    }
    
    
    public class MyComponent1 extends VerticalLayout{
    
      public MyComponent1(){
    
      //create UI
      ....
    
      updateData();
    
      Property.ValueChangeListener updateListener = new Property.ValueChangeListener() {
                        @Override
                        public void valueChange(Property.ValueChangeEvent event) {
                           updateData();
                        }
                    };
      MyApplication.getCurrent().getDispatcher().addValueChangeListener(updateListener);
    
    
      }
    
    private void updateData(){
      MyState myState = MyApplication.getCurrent().getMyState().getValue();
    
      //update this component with myState
    
    }
    }
    
     public class MyComponent2 extends VerticalLayout{/*Similarly with Component1*/}