如何刷新CDIView以反映在另一个CDIView中所做的更改?

时间:2017-12-11 14:37:59

标签: java navigation vaadin cdi

我正在使用cdi-helpers插件,UI扩展ViewMenuUI。我有CDIViews喜欢

OGSContractView

@UIScoped
@CDIView("Contract")
@ViewMenuItem(order = ViewMenuItem.DEFAULT, icon = FontAwesome.BANK)
public class OGSContractView extends CssLayout implements View{ 
    // There's some UI Fields and some Functions to refresh the UI Fields
    public void RefreshList(){...}
}

SchoolView

@UIScoped
@CDIView("School")
@ViewMenuItem(order = ViewMenuItem.DEFAULT, icon = FontAwesome.BANK)
public class SchoolView extends CssLayout implements View{
    //Some UI and functions inside
    //here, after some changes, I want to call a Refresh_Function 
    //from my OGSContractView class
    someData.saveInDatabase();
    ogsContractView.refreshList(); // here is my problem
}

SchoolView中,我正在更改数据库中的一些数据,之后我想调用OGSContractView.refreshList()来更新那里的一些ui字段。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

有关更新的问题。您无需从另一个视图中调用refresh()

您可以在public void enter(ViewChangeEvent event)上覆盖方法OGSContractView,例如

@Override
public void enter(ViewChangeEvent event) {
   refresh():
}

每次进入该视图时,内部导航器都会调用上面的方法。