在zk mvc中我想迭代列表

时间:2013-07-20 12:20:35

标签: java zk

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

的作用

1 个答案:

答案 0 :(得分:0)

我不相信你可以从ZK's Expression Language (EL)执行contains之类的功能。

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

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

isAdmin的getter添加到模型对象中:

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

这看起来似乎有点多了,但我认为将视图与业务逻辑分开实际上有很长的路要走。像这样的小事使你的观点更具说明性和易于阅读,同时保持Java的复杂性,你可以轻松地测试它。