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 没有“空”概念,那些内联数组可能也不受欢迎。

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

于 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()的Javadocs显示该方法的参数。

注意 2. 在这种情况下(dotCMS 1.7),pageSize arg(最终 int - 要在页面中显示的元素数)不遵循 dotCMS 约定,即 0 确实意味着 0!通常它的意思是“没有限制”。

注意 3. 第五个参数 (showUserGroups) 应该为 false,否则我会得到重复项(就像在完全连接中一样)。

于 2010-09-24T06:46:27.990 回答