0

我正在使用 iCal4j 库来生成 iCalendar 提要。

如果没有事件被添加到日历中(仅仅是因为碰巧没有任何即将发生的事件要添加),当将 iCalendar 数据写入输出流时,iCal4j 会引发验证异常:

net.fortuna.ical4j.model.ValidationException: Calendar must contain at least one component
    at net.fortuna.ical4j.model.Calendar.validate(Calendar.java:287)
    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)

那么根据 iCalendar 标准,没有事件的日历实际上是无效的,还是这只是 iCal4j 的验证过于严格?(如果后者适用,有没有办法放松验证?)

4

1 回答 1

1

从技术上讲,iCalendar 至少需要一个组件,如第 3.6 节所述:

https://www.rfc-editor.org/rfc/rfc5545#section-3.6

   icalbody   = calprops component

   [snip..]

   component  = 1*(eventc / todoc / journalc / freebusyc /
                timezonec / iana-comp / x-comp)

您可以使用非验证 CalendarOutputter 来避免此异常,但目前无法在 iCal4j 中选择性地禁用空日历验证。

于 2012-05-28T14:06:06.883 回答