Calendar 按代码创建日历并在Liferay中添加权限模型

Calendar 按代码创建日历并在Liferay中添加权限模型,calendar,liferay,Calendar,Liferay,我有Liferay 6.2 GA4。。。 我想通过代码在portlet中创建一个生日日历。。。因此,我在portlet中创建了一个日历,代码如下: long calendarId = CounterLocalServiceUtil.increment(Calendar.class.getName()); calendar = CalendarLocalServiceUtil.createCalendar(calendarId); calendar.setName(BIRTHDAYS_CALEN

我有Liferay 6.2 GA4。。。 我想通过代码在portlet中创建一个生日日历。。。因此,我在portlet中创建了一个日历,代码如下:

long calendarId = CounterLocalServiceUtil.increment(Calendar.class.getName());
calendar =  CalendarLocalServiceUtil.createCalendar(calendarId);
calendar.setName(BIRTHDAYS_CALENDAR_NAME);
calendar.setGroupId(themeDisplay.getScopeGroupId());
calendar.setUserId(themeDisplay.getUserId());
calendar.setCreateDate(new Date());
calendar.setCompanyId(themeDisplay.getCompanyId());
calendar.setUserName(themeDisplay.getUser().getFullName());
calendar.setModifiedDate(new Date());
calendar.setCalendarResourceId(getCalendarDefault(themeDisplay.getScopeGroupId()).getCalendarResourceId());
calendar.setColor(6663561);
CalendarLocalServiceUtil.addCalendar(calendar);
这工作正常,日历将被创建。。。但在那之后我面临一个问题

如果我尝试在portlet(在站点中)中设置日历的权限,我会得到一个空白页面,日志中有一个错误:

java.lang.IllegalArgumentException: Permissioned model is null
所以我的问题是: 如何创建具有权限的日历? 我想使用默认权限创建日历,当您在站点中创建日历时,将显示以下内容:

权限

可查看者:站点成员

我该怎么做

谢谢

编辑

我在liferay论坛上问了同样的问题,但没有得到答案。。。所以我在这里问,希望我能在这里得到答案:)

您可以拨打:

CalendarLocalServiceUtil.addCalendar(long userId, long groupId, long calendarResourceId, java.util.Map<java.util.Locale, java.lang.String> nameMap, java.util.Map<java.util.Locale, java.lang.String> descriptionMap, java.lang.String timeZoneId, int color, boolean defaultCalendar, boolean enableComments, boolean enableRatings, com.liferay.portal.service.ServiceContext serviceContext)
CalendarLocalServiceUtil.addCalendar(长用户ID、长组ID、长calendarResourceId、java.util.Map nameMap、java.util.Map descriptionMap、java.lang.String timeZoneId、int-color、布尔默认日历、布尔启用注释、布尔启用评级、com.liferay.portal.service.ServiceContext服务上下文)
它将创建资源权限


Fabio。

我找到了一个解决方法,您只需在创建日历后调用addModelResource方法即可

ResourceLocalServiceUtil.addModelResources(calendar, serviceContext);

希望它能帮助别人

我知道你已经问过这个问题了。请表示一些尊重,并始终添加一个链接,当交叉张贴(见)。这是我的朋友!伟大的liferay专家,我投他的票。那么调用addCalendar并通过addCalendar方法中的所有参数?好的,谢谢,我会试试的!!用你的方法做不到,我可能做了点什么。。不管怎样,我找到了另一种方法,谢谢你!我检查了addCalendar代码,这个答案应该有效!我猜我做错了什么。。泰!