Upon further investigation I think this behaviour is limited to ice:selectManyListbox specifically, and how singleSubmit interacts with it. We just happened to see it demonstrated in the dualList composite component.
I tested with a blank ice:selectManyListbox in a simple page with singleSubmit enabled and two POSTs were sent to the server. In the case of dualList this means the add actionListener is called twice.
So when I click the ice:selectManyListbox (regardless of if it's in a composite component or on it's own) an expected POST is done to the server that looks like this:
iceform=iceform&ice.window=m8gjg6egid&ice.view=vdawc31&iceform%3Aicepnltabset%3A0%3Aj_idt60Expanded=&iceform%3Aicepnltabset%3A0%3Aj_idt67Expanded=&iceform%3Aicepnltabset%3A0%3AdualListDemo_leftList=Grapefruit&icefacesCssUpdates=&iceform%3Aj_idcl=&javax.faces.ViewState=-6134776949808937328%3A275458056476100104&javax.faces.source=iceform%3Aicepnltabset%3A0%3AdualListDemo_addBtn&javax.faces.partial.event=click&javax.faces.partial.execute=%40all&javax.faces.partial.render=%40all&ice.window=m8gjg6egid&ice.view=vdawc31&ice.focus=iceform%3Aicepnltabset%3A0%3AdualListDemo_addBtn&iceform%3Aicepnltabset%3A0%3AdualListDemo_addBtn=&ice.event.target=iceform%3Aicepnltabset%3A0%3AdualListDemo_addBtn&ice.event.captured=iceform%3Aicepnltabset%3A0%3AdualListDemo_addBtn&ice.event.type=onclick&ice.event.alt=false&ice.event.ctrl=false&ice.event.shift=false&ice.event.meta=false&ice.event.x=857&ice.event.y=471&ice.event.left=true&ice.event.right=false&ice.submit.type=ice.s&ice.submit.serialization=form&javax.faces.partial.ajax=true
(apologies for the formatting)
Nothing unexpected here.
However then I click ANYWHERE else in the page, and a second POST is done. I can click to select a different item, I can click to expand the header, or I can flat out click on the empty background space of the page. When I do that the second POST fires, which looks like this:
vdawc31=vdawc31&icefacesCssUpdates=&javax.faces.ViewState=-6134776949808937328%3A275458056476100104&javax.faces.source=iceform%3Aicepnltabset%3A0%3AdualListDemo_addBtn&javax.faces.partial.execute=iceform%3Aicepnltabset%3A0%3AdualListDemo_addBtn&javax.faces.partial.render=%40all&ice.window=m8gjg6egid&ice.view=vdawc31&ice.focus=&iceform%3Aicepnltabset%3A0%3AdualListDemo_addBtn=&ice.event.target=iceform%3Aicepnltabset%3A0%3AdualListDemo_addBtn&ice.event.captured=iceform%3Aicepnltabset%3A0%3AdualListDemo_addBtn&ice.event.type=onunknown&ice.submit.type=ice.se&ice.submit.serialization=element&javax.faces.partial.ajax=true
With dualList this manifest as calling the add actionListener twice. The important info to take from the above POST is:
ice.event.type=onunknown
So it looks like ice:selectManyListbox is firing an unknown event at some point and singleSubmit picks it up and does another POST.
ICE-6470was fixed in the ICEfaces 2 trunk, and as a result this problem has been resolved.