【问题标题】:Getting email addresses of all users with the Administrator role获取具有管理员角色的所有用户的电子邮件地址
【发布时间】:2010-09-24 14:46:27
【问题描述】:

我们使用的是 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].

出了什么问题?任何帮助将不胜感激!

罗伯 :)

【问题讨论】:

    标签: velocity dotcms


    【解决方案1】:

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

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

    【讨论】:

    • 感谢 Serg 的回答。我将尝试以不同的方式编写这些参数。
    • 关于您的第二个想法,dotCMS 的结构使得逻辑可以轻松地体现在页面中而无需“后端”。为了这个目的,他们通过 Velocity 公开了 API。他们的标语 (dotcms.com) 滑稽地强调了这一点:“看马,不需要应用程序开发人员。”对对。说了这么多,我觉得上面的逻辑没那么严重,需要分开。
    • 这绝对是数组接受的格式。 (velocity.apache.org/engine/releases/velocity-1.5/…) #set( $monkey.Say = ["Not", $my, "fault"] )
    • @Robert 据我所知,ArrayList 在速度方面支持数组,因此当您创建数组并将其作为参数传递时,它可能会传递 ArrayList,而不是数组。我认为你可以在你的方法中设置一个断点,看看发生了什么。
    【解决方案2】:

    得到了答案 - 感谢 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,否则我会得到重复项(就像在完全连接中一样)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-30
      • 2014-01-19
      • 1970-01-01
      • 1970-01-01
      • 2016-12-17
      • 2022-10-01
      相关资源
      最近更新 更多