0

我正在开发一个自定义插件,它使用日历 portlet 的 JSON Web 服务来显示事件(例如,通过http://localhost:8080/api/jsonws/calendar-portlet.calendar/get-calendar/calendar -id/11504)。

获取用户有权访问的日历列表似乎应该很简单,但我无法弄清楚。该插件使用 Java 和 JavaScript 的组合,因此我可以通过 Java 或 REST/JSON 获取信息。

现在,我正在进入日历并从 RSS 提要 URL 中获取 ID;我确信这不是获取此信息的最佳方式。

4

1 回答 1

1

您可以像这样获取组织中的所有日历:

String servletContextName = "calendar-portlet";
    ClassLoader classLoader = (ClassLoader)com.liferay.portal.kernel.bean.PortletBeanLocatorUtil.locate(servletContextName, "portletClassLoader");

    com.liferay.portal.kernel.dao.orm.DynamicQuery dynamicQuery = com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil.forClass(com.liferay.calendar.model.Calendar.class, classLoader);
    dynamicQuery.add(com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil.forName("groupId").eq(groupId));
    java.util.List<com.liferay.calendar.model.Calendar> calendars = com.liferay.calendar.service.CalendarLocalServiceUtil.dynamicQuery(dynamicQuery);
    if(calendars.isEmpty()) {
        throw new Exception("No calendar found for group "+groupId);
    } else {
        for(com.liferay.calendar.model.Calendar c: calendars) {
            System.out.println("Found calendar "+c);
        }
    }

也许它可以帮助您入门..如果您想按用户获取它们,可能会更改动态查询以查找 userId 而不是 groupId

于 2015-08-25T04:33:50.080 回答