2012-05-24 28 views
0

我正在使用iCal4j库来生成iCalendar供稿。空日历上的iCal4j验证异常

如果没有事件添加到日历(仅仅是因为不正好是任何即将发生的事件添加),iCal4j抛出验证异常时,它的时间到的iCalendar数据写入到一个OutputStream:

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

技术上的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中的空日历验证。

+0

感谢您的回答。你碰巧知道其他ical feed如何处理那些根本不需要添加任何事件的情况? (虽然我想我可以添加一些虚拟x组件来满足验证器...) – Rolf

+0

我不确定其他实现如何处理空日历。我猜如果他们接受空日历是很常见的,我们可以添加一个标志来选择关闭ical4j中的验证(为了兼容性)。 – fortuna