【问题标题】:How to refresh CDIView to reflect changes made in another CDIView?如何刷新 CDIView 以反映在另一个 CDIView 中所做的更改?
【发布时间】:2017-12-11 14:37:59
【问题描述】:

我正在使用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 字段。

我该怎么做?

【问题讨论】:

    标签: java navigation vaadin cdi


    【解决方案1】:

    对于更新的问题。你不需要从另一个视图调用refresh()

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

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

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

    【讨论】:

    • @RezaPayambari 添加了更新以回答以防您没有直接参考视图(如何在不注入的情况下进行操作)。
    • 是的!问一个错误的问题是一个愚蠢的错误。但是,我仍然需要使用 Navigator,或者在这种情况下它不需要 Navigator,也在 ViewMenuUI?
    • @RezaPayambari 当我查看代码时,不再需要导航器,ViewMenuUI 在内部使用它。只需在我更新的答案中实现该方法即可。我相信这是你需要的。顺便说一句:我从这个不再有效的答案中删除了我的 cmets。请这样做以保持网站清洁:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 2022-09-11
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    相关资源
    最近更新 更多