It depends in what grade of complexity would you like to add to your solution. You could create a method in your ViewObjectImpl to get the first row which will contain the string, then in the same method split that string and create new rows in your VO (one row for each element). Then create a view criteria where the attribute does not contains commas so you get you LOV with the elements you really need.
Other option is just to leave the ViewObject as it is and using a backing bean in your page, you could get from the bindings the string, split it and create an array of SelectItems which are going to be used by your SelectOneChoice component.
But again, it depends on you and your requirement how to implement this. There might be other better ways to do it but this should get you started.
Actually I tried this method. I am overriding the executeQueryForCollection metthod and trying to break down the first result into 4 separated items. I am just going through few issues with that. The executeQueryForCollection method is getting called twice for some reason and as a result in the jsf page search criteria section is still showing comma separated list in drop down but when i refresh the page it shows 4 items in the drop down list. I am kind of stuck there at this point finding all options to solve this.
Instead of a programmatic VO from PL/SQL, I've sometimes found it easier to write PL/SQL functions that return a table - need to CREATE a TYPE for the data items to be returned, and a NESTED TABLE TYPE as a TABLE of the first type. The function returns the table type and can even be a PIPElined table function. Then I create a VO with the following:
SELECT * FROM TABLE(my_function_returning_table)
The function can even take parameters, which you fill with BIND variables in your VO.
Thats a neat trick and it works. Thanks a lot for tip