从网格中的 ZK 按钮执行 class 方法

Execute class method from ZK button in grid

需要帮助。

Post.java 是一个对象,它有一个发布它的用户、一个信息字符串和一个带有点赞数的整数。 PostData.java 将所有帖子的列表保存在 ArrayList 中。 PostViewModel.java 与祖尔交流

祖尔:

<zk>
<window apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('fb.PostViewModel')">
<grid height="550px" model="@load(vm.postData.posts)" emptyMessage="Nothing in Posts.">
<template name="model">
<row>
<window border="normal">
<caption label="@load(each.user.getNombre())"/> 
<label value="@load(each.info)" />
<separator bar="true"/>
<button label="Like" onClick="addLike()"/>.
<textbox id="likeTB" disabled="true" value="@load(each.likes)" width="30px;"/>
<zscript>
public void addLike(){
//Somehow add to the object Post's likes one.
//Temporary fix that just modifies the textbox.
//String test = likeTB.getValue();
//Integer num = Integer.parseInt(test);
//num++;
//likeTB.setValue(num+"");
}
</zscript></window></row></template></grid></window>
</zk>

我的问题是,如何使用“赞”按钮转到我点赞的对象 Post 并使用方法 addOneLike()?

我假设您的 post 具有 id 或其他一些独特的方式。我还将假设您的 zscript 代码将被移动到视图模型中。您可以在您的 zul 代码中执行以下操作:

<button label="Like" onClick="@command('addLike', id=each.id)"/>

然后在您的视图模型中:

@Command
public void addLike(@BindingParam("id") long id) {
    // post with id like++
}