There aren't multiple binders, there are multiple PropertyEditors
.
Your custom one is never called because you are binding the wrong path.
<sf:select path="category.ID" id="category">
You must bind to category
and not category.ID
<sf:select path="category" id="category">