0

dotCMS 1.7aを使用していますが、管理者の役割でユーザーの電子メールアドレスを取得するのに問題があります。

このSQLは機能します:

   select user_.emailaddress
   from user_
   INNER JOIN users_roles
   ON users_roles.userid = user_.userid
   INNER JOIN role_
   ON users_roles.roleid = role_.roleid
   where role_.name = 'Administrator';

しかし、このVelocityコードはそうではありません:

   <p>Start</p>
   #set($found = $cmsuser.searchUsersAndUsersProxy(null, null, null, [], true,
   ["Administrator"], true, null, 1, 0))
   <p>Finish</p>
   <p>Found: $found [$found.size()].</p>
   #set($theUsers = $found.get("users"))
   <p>Got theUsers: $theUsers [$theUsers.size()].</p>

上記のコードの出力は次のとおりです。

   Start
   Finish
   Found: {total=22, usersProxy=[], users=[], groupNames=[], roleNames=[]} [5].
   Got theUsers: [] [0].

何が問題になっていますか?どんな助けでも大歓迎です!

ロブ:)

4

2 に答える 2

0

このcmsについては何も知りませんが、velocityは渡されたパラメーターが気に入らないと思います。Velocityには「null」の概念がなく、これらのインライン配列もおそらく歓迎されません。

これらのユーザーをサーバー側に配置してから、オブジェクトを速度に表示する準備を整える必要があると思います。これがテンプレートエンジンの目的です。データを取得するのではなく、表示するためです。

于 2010-09-22T15:11:07.470 に答える
0

答えを得ました-Paul P.に感謝します:)

#set($found = $cmsuser.searchUsersAndUsersProxy(null, null, null, [], false,
["Administrator"], true, null, 1, 1000))
<p>Found $found.get("users").size() Administrator users.</p>
#set($theUsers = $found.get("users"))
#foreach ($user in $theUsers)
$user.fullName ($user.emailAddress)<br>
#end

注 1. $cmsuser.searchUsersAndUsersProxy()の Javadoc は、そのメソッドのパラメーターを示しています。

注 2. この場合 (dotCMS 1.7)、pageSize 引数 (最終的な int - ページに表示する要素の数) は dotCMS の規則に従っていません。つまり、0 は実際には 0 を意味します。通常は「無制限」を意味します。

注 3. 5 番目のパラメーター (showUserGroups) は false にする必要があります。そうしないと、(完全結合の場合と同様に) 重複が発生します。

于 2010-09-24T06:46:27.990 に答える