获取具有管理员角色的所有用户的电子邮件地址

时间:2010-09-22 03:28:55

标签: velocity dotcms

我们正在使用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].

出了什么问题?任何帮助都将非常感激!

罗布 :)

2 个答案:

答案 0 :(得分:0)

我对这个cms一无所知,但我认为速度与你传递的参数不一样。 Velocity没有“null”概念,这些内联数组也可能不受欢迎。

我认为您需要在服务器端获取这些用户,然后准备将对象显示为速度。这就是模板引擎的用途 - 显示数据,而不是检索数据。

答案 1 :(得分: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 arg(final int - 页面中显示的元素数)不遵循dotCMS约定,即0确实意味着0!通常它意味着“没有限制”。

注意3.第五个参数(showUserGroups)应为false或我将获得重复(如在完全连接中)。