首页 > 解决方案 > 从网格中的 ZK 按钮执行类方法

问题描述

需要帮助。

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

祖尔:

<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>

我的问题是,我怎样才能使用 Like 按钮转到我给 Like 的对象 Post 并使用方法 addOneLike()?

标签: javabuttongridzk

解决方案


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

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

然后在您的视图模型中:

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

推荐阅读