java - AfterCompose 与 Init 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
public void init() {
    //do more things
}

谢谢

最佳答案

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

ZUL 页面生命周期如下:

<强>1。页面初始化

<强>2。组件创建

它首先加载ZUL中分配的组件的属性

如果使用 ViewModel 属性将任何 View Model 分配给组件,则它会由 Binder 初始化并调用 init 方法

如果我们将某个方法标记为@init注释,那么它将在这里被调用。

组件创建完成后,它会调用 AfterCompose

如果我们将某个方法标记为@AfterCompose注释,那么它将在这里被调用。

<强>3。事件处理

<强>4。渲染

<小时/>

@init:

  • 在组件创建完成之前,它会在创建 ViewModel 时加载最初在 ViewModel 中声明的带注释的方法。
  • 我们可以使用 init 方法在 ViewModel 中分配需要初始化的变量。
  • @AfterCompose:

    1. 仅在组件创建完成后才加载 ViewModel 中声明的带注释的方法。
    2. 我们可以使用 AfterCompose 方法在 ViewModel 中分配需要初始化的变量。

    注意:建议使用 AfterCompose 而不是 init。因为它是在组件创建和 View 模型初始化之后调用的。

    请参阅以下链接以获得更好的理解!!

    https://www.zkoss.org/wiki/ZK_Developer%27s_Guide/Appendix/Component_Life_cycle/Table_of_Sequence

    http://books.zkoss.org/zk-mvvm-book/8.0/syntax/viewmodelinit.html

    http://books.zkoss.org/zk-mvvm-book/8.0/syntax/aftercompose.html

    关于java - AfterCompose 与 Init ZK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41226108/

    相关文章:

    java - 如何使用 swagger-codegen-plugin (maven) 生成客户端代码?

    java - 如何 Autowiring Spring Stream 云绑定(bind)

    java - 在 java 反射中发送到 getDeclaredMethod(String, Class[]) 的参数类型

    xamarin - 我应该如何使用 Prism 和 Unity 构建一个 View 的多个实例,所有这些实例都具有非常相似的 ViewModel

    java - 使用Index API同步将数千条记录索引到Elasticsearch中是正确的方法吗?

    ios - 如何选择 PDF 中的文本行然后突出显示它们? (iOS)

    java - @Id 注释是什么?

    c# - ASP.NET MVC Entity Framework 延迟加载或 ViewModel?

    wpf - 与父 ViewModel 绑定(bind)属性

    为什么打印“B”会明显的比打印“#”慢