I'm not sure what the PrimeFaces version of selectOneMenu does differently than the stock JSF h:selectOneMenu, but I'm pretty sure it has AJAX built in, so the actual f:ajax tag wouldn't be necessary as long as you the the PrimeFaces AJAX options.
In either case, the recommended method is to define a valueChangeListener as an attribute of the selectOneMenu element itself. You can then remove the "listener" attribute from the AJAX tag (if you aren't using PrimeFaces AJAX).
You do need to activate AJAX for the onchange event, however. For the f:ajax element, that would be 'event="change"'. Otherwise the AJAX event won't fire.
In the valueChangeLisener, you should not attempt to return anything for the UI. All the listener has to do is reset the model and value properties of the dependent selectOneMenu control. You also don't have to test for the value change. If the value didn't change, the listener method will not be invoked.
An IDE is no substitute for an Intelligent Developer.
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com