【问题标题】:ZK @listen annotationZK @listen 注解
【发布时间】:2013-05-30 10:46:57
【问题描述】:

我有以下问题:我有一个包含四个组框的 zk 页面,其 id 是“id_gb1”、“id_gb2”、“id_gb3”和“id_gb4”。 我创建了一个 Java 控制器(扩展 GenericForwardComposer),其中包含以下几行:

[...]
@Listen("onClick = #id_gb1; onClick = #id_gb2; onClick = #id_gb3; onClick = #id_gb4")
private void onClick() {
  //do some stuff
}
[...]

我用类名设置zk文件中window元素的属性apply的值。 问题是,当我单击 groupbox 的标签时,什么也没有出现:此外,如果我在同一个 Java 控制器中编写

[...]
public void onClick$id_gb1() {
  //do some stuff
}
[...]

有效!

有谁知道我做错了什么? 谢谢, 丹尼尔

【问题讨论】:

  • 您使用的是哪个版本的 ZK?

标签: java model-view-controller controller annotations zk


【解决方案1】:

有一些大的变化moving from ZK5 to ZK6

ZK5:
使用GenericForwardComposeronClick$myButton 语法。

ZK6:
使用SelectorComposer@Listen 注释。

关于这个话题,ZK6.5 介绍了 MVVM 布局,如果您正在学习 ZK,您可能会想了解它。

【讨论】:

  • 谢谢,你能给我链接一篇描述 MVVM 模式以及使用 MVVM 代替 MVC 或 MVP 的优点的文章吗?
  • 这是对“如何在 ZK 中使用 MVVM”问题的回答,我的问题有点不同,我正在寻找一篇解释 MVVM 模式及其优点的文章 :)。 .. 现在我找到了 ;)
  • 我会更喜欢 MVVM 而不是 MVC,因为它从开发人员那里抽象出大量的代码,MVVM 的主要优点是与 View 的松耦合
【解决方案2】:

我为组件使用了sclass 属性,然后在控制器中我只为所有类似的组件使用了一个@Listen,而这些组件又具有相同的调用方法。

zul 文件:

<toolbarbutton sclass="inLineBtns" .../>
<toolbarbutton sclass="inLineBtns" .../>
<toolbarbutton sclass="inLineBtns" .../>

扩展SelectorComposer 类的控制器文件:

@Listen("onClick = .inLineBtns")
public void doSomthing(){
...
}

注意点,它表示它是一个类名,而不是组件的 ID。

【讨论】:

  • @DanieleMilani 不是我的朋友,“sclass”是 ZK 组件的预定义属性,您可以像使用每个组件的其他属性一样简单地使用此属性...如果您需要更多详细信息,我可以发送zul文件和控制器的完整代码。
  • sclass 是“样式类”的缩写,是用于 CSS 的 HTML 的 class 属性的简单代理(“类”是 Java 中的保留字,因此不能使用)。您在这里所做的是将 CSS 类应用于所有这些元素并为它们附加一个监听器。
  • 如果一个组件包含在另一个 zul 文件中,那么 sclass 在@Listen 注释上非常有用
猜你喜欢
  • 1970-01-01
  • 2020-02-23
  • 1970-01-01
  • 1970-01-01
  • 2012-09-09
  • 1970-01-01
  • 1970-01-01
  • 2013-04-30
  • 1970-01-01
相关资源
最近更新 更多