我正在使用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的验证是非常严格的? (如果后者适用,有没有办法放宽验证?)
答案 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中有选择地禁用空日历验证。