我在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
的作用答案 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的复杂性,你可以轻松地测试它。