0

我在 zk 中有一个程序,我需要使用 mvc 来设置列表框的详细信息。在我的模型中,我有一个用户,他有一个 id、一个用户名、一个密码和一组角色(一个角色是一个枚举)。在我的控制器中填写ListModelList<User>

在 zul 我有以下代码:

<template name="model">
    <listitem >
        <listcell label="${each.idUser}"></listcell>
        <listcell label="${each.username}"></listcell>
        <listcell label="${each.password}"></listcell>
        <listcell label="${each.roles}"></listcell>
    </listitem> 
</template>

现在我不想放 each.roles,但如果角色集包含例如 Role.ADMIN

我怎么做?我试过了

<listcell label="${each.roles.contains(Role.ADMIN)}"></listcell>

但这给我总是假的,虽然有些用户有 ADMIN 的角色

4

1 回答 1

0

我不相信你可以执行像ZK's Expression Language (EL)contains这样的函数。

相反,您需要将此contains(Role.ADMIN)逻辑包装在一个看起来更像 getter 的函数中。尝试这个:

<listcell label="${each.isAdmin}"></listcell>

将 getterisAdmin添加到您的模型对象中:

public boolean getIsAdmin() {
    return roles.contains(Role.ADMIN);
}

这似乎需要做更多的工作,但我认为它实际上在将视图与业务逻辑分开方面有很长的路要走。像这样的小事情使您的视图更具声明性和更易于阅读,同时保持 Java 中的复杂性,您可以轻松地对其进行测试。

于 2013-07-20T14:58:20.240 回答