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 が含まれている場合は true にしたいのですが

それ、どうやったら出来るの?私は試した

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

一部のユーザーはADMINの役割を持っていますが、それは常にfalseになります

4

1 に答える 1

0

ZK の Expression Language (EL) のcontainsような関数を実行できるとは思えません。

contains(Role.ADMIN)代わりに、このロジックを getter に似た関数でラップする必要があります。これを試して:

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

isAdminモデル オブジェクトにゲッターを追加すると、次のようになります。

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

これは少し手間がかかるように思えるかもしれませんが、実際にはビューをビジネス ロジックから分離するのに大いに役立つと思います。このようなちょっとしたことで、Java の複雑さを簡単にテストできるように保ちながら、ビューをより宣言的で読みやすくします。

于 2013-07-20T14:58:20.240 に答える