Recently, I was fighting with a Primefaces component: calendar.
I was using it with my keyboard, and I immediately noticed that the ajax update that keeps the control synchronized with the bean was not working.
Selecting a date with the mouse was fine, editing and pressing "Enter" was OK, but changing it and tabbing or clicking away was not.
Curious, I dug in and found that primefaces uses the standart jQuery UI datepicker, and wires itself to its standard onSelect event. But this event is fired only when you explicitly select a date, not when a date changes (through the keyboard, or code).
So, I decided to write a quick js to call onSelect when a date is updated. Here it is
I also keep track of the previous date, to avoid double notifications. And it works very well for us!