I have a page with 2 @PropertySelection components (A and B). An EventListener listens to onchange events on A, and changes the content of B accordingly. When caching is enabled (-Dorg.apache.tapestry.disable-caching=false), everything works as expected.
On each onchange event, the dojo console indicates that the content of B has been updated, and that a js script registering the onchange event has been executed.
If caching is disabled (-Dorg.apache.tapestry.disable-caching=true), the behavior is different :
- on the first onchange event, the listener is called once as expected
- on the second onchange event, the listener is called twice
- on the third onchange event, the listener is called four times.
Having a closer look at the dojo console output, it appears that the form event registration script creates a different form event ID each time the listener is called (when caching is enabled, the form event ID remains the same). It seems that each response creates a new registration, instead of overwriting the existing one. This would explain the observed behavior.