MyFaces can't be the cause, it has always worked in MyFaces for us and anyone else. We have however never really used Trinidad, so I took a look in the Trinidad source code. It appears that it returns Collections#emptySet()
when there are no render IDs. This is however immutable! This totally explains the exception you're facing.
This is a rather astonishing bug in Trinidad. The javadoc clearly says that the returned collection must be mutable.
Return a
Collection
of client identifiers from the current request with the request parameter namePARTIAL_RENDER_PARAM_NAME
. If there is no such request parameter, return an emptyCollection
. These client identifiers are used to identify components that will be processed during the render phase of the request processing lifecycle. The returnedCollection
is mutable.
If you like Trinidad, report it as a bug to the Trinidad guys. Otherwise just get rid of it. I don't see any reason to use it if you're already using PrimeFaces (and Tomahawk).