我正在尝试在<button>
字段中连接多个List<Button>
(ZUL标记)。
目的是创建多个按钮以删除用户列表中列出的用户。
当有人单击按钮时,控制器应处理一个onClick
事件,以便调用该模型,该模型将删除数据库中的用户。
问题是:
<button>
是否真的接线。@Listen("onClick = button")
声明的事件处理程序不起作用。我不知道问题出在自动装配过程中还是事件处理上,或者两者都有。
请注意,每一行都有一个删除按钮,其中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>
//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!");
}
}
That's the rendered page, just for clarity
控制台日志显示无错误或警告。我犯错了吗?如何通过多个按钮触发多个onClick
事件并使用一个事件处理程序处理该事件?
答案 0 :(得分:0)
所以,让我先解释一下为什么在您的案例的重要阶段不起作用:
1.创建页面。
2.连接页面上的所有组件。
3.加载日期,然后在页面中填写数据。
由于您使用了<template>
,因此它是在第3阶段呈现的,因此此时不再进行任何接线。
我已更新existing fiddle,运行并按两次搜索。他将始终给出列表中按钮的大小。
因此,如您所见,它一直有1个按钮。
事件转发,如this forum topic中的cor3000所述: 这是a fiddle example。