В Liferay 6.2 как получить список календарей из портлета календаря?

Я работаю над настраиваемым плагином, который использует веб-сервис JSON для портлета календаря для отображения событий (например, через http://localhost:8080/api/jsonws/calendar-portlet.calendar/get-calendar/calendar-id/11504).

Вроде бы просто получить список календарей, к которым у пользователя есть доступ, но я не могу понять это. Плагин использует комбинацию Java и JavaScript, поэтому я мог получить информацию либо через Java, либо через REST/JSON.

Прямо сейчас я иду в календарь и получаю идентификатор из URL канала RSS; Я уверен, что это не лучший способ получить эту информацию.

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

Другие вопросы по тегам