Java AfterCompose vs Init ZK

Java AfterCompose vs Init ZK,java,annotations,viewmodel,zk,Java,Annotations,Viewmodel,Zk,我正在使用Zk框架。我知道存在@AfterCompose和@Init注释,但我不知道在ViewModel中使用它时的区别和顺序 有人能解释一下区别吗 比如说, @AfterCompose public void init(@ContextParam(ContextType.VIEW) Component view) { Selectors.wireComponents(view, this, false); // wire the components here } @Init pub

我正在使用Zk框架。我知道存在@AfterCompose@Init注释,但我不知道在ViewModel中使用它时的区别和顺序

有人能解释一下区别吗

比如说,

@AfterCompose
public void init(@ContextParam(ContextType.VIEW) Component view) {
    Selectors.wireComponents(view, this, false); // wire the components here
}

@Init
public void init() {
    //do more things
}

谢谢,

init和@AfterCompose之间的区别在于它们何时执行,而不是它们将执行什么。这两种方法以类似的方式分配视图模型中的变量,以及不依赖于组件创建的任何其他初始化任务

ZUL页面生命周期如下所示:

1。页面初始化

2。组件创建

它首先加载在ZUL中指定的组件的属性

如果使用ViewModel属性指定给组件的任何视图模型,则它将由Binder初始化并调用init方法

如果我们将某个方法标记为@init annotation,那么将在此处调用它

当组件完全创建时,它调用AfterCompose

如果我们将某个方法标记为@AfterCompose annotation,那么将在此处调用它

3。事件处理

4。渲染


@初始化:

  • 它首先在创建ViewModel时加载ViewModel中声明的带注释的方法,然后再完全创建组件
  • 我们可以使用init方法分配需要在ViewModel中初始化的变量
  • @后合成:

  • 它仅在组件创建完成后加载ViewModel中声明的带注释的方法
  • 我们可以使用AfterCompose方法分配需要在ViewModel中初始化的变量
  • 注意:建议在init上使用AfterCompose。因为它是在组件创建和视图模型初始化之后调用的

    请参考以下链接以更好地理解


    MVC的用户AfterCompose和MVVM方法的Init