Я использую аддон 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(), чтобы обновить там некоторые поля пользовательского интерфейса.

Как я могу это сделать?

1
Reza P. 11 Дек 2017 в 17:37

1 ответ

Лучший ответ

Для обновленного вопроса. Вам не нужно вызывать refresh() из другого представления.

Вы можете переопределить метод public void enter(ViewChangeEvent event) на OGSContractView, например

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

Вышеуказанный метод вызывается внутренним навигатором каждый раз, когда вы входите в это представление.

1
pirho 19 Дек 2017 в 10:26