ICal4j中的重复规则

use*_*183 5 java icalendar ical4j rfc5545

我正在尝试.ics使用ICal4j创建一个文件.
但是当我尝试添加重复时它会失败,抛出一个ValidationException:

net.fortuna.ical4j.model.ValidationException: Invalid property: RRULE at
        net.fortuna.ical4j.model.Calendar.validate(Calendar.java:297) at  
        net.fortuna.ical4j.model.Calendar.validate(Calendar.java:257) at 
        net.fortuna.ical4j.data.CalendarOutputter.output(CalendarOutputter.java:96) at 
        net.fortuna.ical4j.data.CalendarOutputter.output(CalendarOutputter.java:83)
Run Code Online (Sandbox Code Playgroud)

我添加重复的代码是:

Recur recur = new Recur(Recur.WEEKLY,null);
recur.setUntil( new DateTime(dateTo.getTime()) );

RRule rule = new RRule(recur);
cal.getProperties().add(rule);
Run Code Online (Sandbox Code Playgroud)

没有这个规则它工作正常,但我想每个星期一添加此事件,
直到12 December 2011(返回的日期dateTo).有任何想法吗?

小智 5

必须将重新出现规则(RRULE)属性添加到日历中的特定事件(VEVENT),而不是日历本身.例如

myEvent.getProperties().add(rule);
Run Code Online (Sandbox Code Playgroud)

此外,如果您希望事件发生在星期一,您应该使用如下规则:

FREQ=WEEKLY;BYDAY=MO;UNTIL=<date>
Run Code Online (Sandbox Code Playgroud)

这是我的头脑,所以最好检查RFC以确定:

http://tools.ietf.org/html/rfc5545#section-3.3.10


Ale*_*exR -1

我对这个 API 也有类似的问题。不幸的是,我现在没有代码,但我记得问题是某些属性是“可选的”。有一个 API 允许他们注册。我建议您下载源代码并查看方法的作用validate。您将看到它验证该属性是否在集合(或映射)中。然后只需找到向该集合添加属性的方法即可。

如果您在获取源代码时遇到困难,只需反编译类文件即可。我个人用这个包做到了这一点。我使用 Eclipse 插件来反编译没有关联源代码的每个类:http://java.decompiler.free.fr/?q =jdeclipse

很抱歉我的回答不够具体,但无论如何我希望它能有所帮助。祝你好运。