We've decided not to change the API as much as possible to makes these changes, however, some changes will be necessary because we currently have no means of defining two events at different times for the same ajax event type.
This is an issue because filter is the only one of the ace:dataTable features with an attribute MethodExpression for a listener. All other events have listeners via ace:ajax. If they all add MethodExpressions it would be trivial to add more attributes to bind post-feature listeners.
With ace:ajax the question is how to represent a post event listener, as a new event type? Or as a new attribute of ace:ajax? All ace:ajax events are currently executed at decode by design, which is fine for pre-feature events.
For post-feature events, they should be executed as the last action of a component in UpdateModel or if possible immediately after the processing of a feature.
Possible representations:
<ace:dataTable>
<ace:ajax event="page" listener="#{bean.prePageListener}"
execute="..." render="..."/>
<ace:ajax event="page" listener="#{bean.postPageListener}"
execute="..." render="..." post="true"/>
</ace:dataTable>
Implementing the above however would require implementing a post-feature event call for each component or event.
This will involve some API changes, renaming the current sort event to presort, etc. So it will have to wait till 3.3.