zk线多部件

  • 本文关键字:多部 zk java zk zul
  • 更新时间 :
  • 英文 :


我正试图在List<Button>字段中连接多个<button>(ZUL标记(。其目的是创建多个按钮来删除用户列表中列出的用户。当有人单击该按钮时,控制器应该处理onClick事件,以便调用将删除数据库中用户的模型。

问题是:

  1. 我不知道<button>是否真的连接好了
  2. @Listen("onClick = button")声明的事件处理程序不工作

我不知道问题是自动布线过程还是事件处理,或者两者兼而有之。

backend.zul

请注意,每一行都有一个删除按钮,id=""与用户ID匹配。我需要这个按钮来检索用户ID并删除具有该ID的记录。(很抱歉,这可能不是最好的方法(。

<?page title="Admin Backend" contentType="text/html;charset=UTF-8"?>
<?init class="zk_auth.controller.AuthenticationInitiator"?>
<zk>
<window title="Admin Backend" border="normal" apply="zk_auth.controller.UsersListController">
<listbox id="AllUsers" emptyMessage="No user found">
<listhead>
<listheader label="Email" sort="auto" />
<listheader label="Name" sort="auto" />
<listheader label="Surname" sort="auto" />
<listheader label="Role" sort="auto" />
<listheader />
</listhead>
<template name="model">
<listitem>
<listcell label="${each.email}" />
<listcell label="${each.name}" />
<listcell label="${each.surname}" />
<listcell label="${each.role}" />
<listcell>
<button label="Delete" sclass="delete_user" id="${each.id }" />
</listcell>
</listitem>
</template>
</listbox>
<button label="Test" id="TestButton" />
</window>
</zk>

zk_auth.controller.UsersListController

//Omitted imports for brevity
public class UsersListController extends SelectorComposer<Component>
{
private static final long serialVersionUID = 1L;
// Not fucus on this.
@Wire
private Listbox AllUsers;
// Here is the problem
// This is the collection wired to all delete buttons.
@Wire("button")
private List<Button> DeleteButtons;
// This button works!
@Wire
private Button TestButton;
// Not focus on this. It lists all the users and it works.
@Listen("onCreate = #AllUsers")
public void ListAllUsers()
{
UserModel Users = new UserModel();
List<User> UsersList = new ArrayList<User>(Users.getAllUsers());
AllUsers.setModel(new ListModelList<User>(UsersList));
}
// Here is the problem
// This doesn't work. I also tried
// @Listen("onClick = button.delete_user")
@Listen("onClick = button")
public void DeleteUser(MouseEvent event)
{
Messagebox.show("It works!");
}
// This simple autowiring works. It targets only one button with id="TestButton".
// No conflict with other onClick event handler, if you delete the test
// nothing change.
@Listen("onClick = #TestButton")
public void Test()
{
Messagebox.show("It works!");
}
}

结果

这是渲染的页面,只是为了清晰

结论

控制台日志没有显示任何错误或警告。我犯了什么错误吗?如何从多个按钮激发多个onClick事件,并用一个事件处理程序处理该事件?

因此,让我首先解释一下为什么这在您的案例的重要阶段不起作用:
1。创建页面
2.连接页面上的所有组件
3.加载日期并在页面中填写您的数据。

因为您使用<template>,所以这是在第3阶段渲染的,因此此时将不再进行布线

我已经更新了一个现有的fiddle,运行并按下搜索两次。他总是给出列表中按钮的大小
所以,正如你所看到的,它一直有一个按钮

解决方案:

事件转发如cor3000在本论坛主题中所解释的:这是一个小提琴的例子。

相关内容

  • 没有找到相关文章

最新更新