在Liferay 6.2中,如何从日历portlet中获取日历列表?

时间:2015-03-24 15:57:30

标签: liferay liferay-6.2

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

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

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

1 个答案:

答案 0 :(得分: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