空日历上的iCal4j验证异常

时间:2012-05-24 07:43:50

标签: icalendar ical4j

我正在使用iCal4j库生成iCalendar Feed。

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

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的验证是非常严格的? (如果后者适用,有没有办法放宽验证?)

1 个答案:

答案 0 :(得分:1)

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

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

   icalbody   = calprops component

   [snip..]

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

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