From your screen shot it's not clear to me the difference between a "faceted search" and a regular one. Can you be more specific about the details of your use case?
Hi Brian. To most people this probably is a regular search, however to my client it's a new and complex way to render a search and filter capability. There are two parts to the use case:
1) There is a single entry field for basic search criteria, and a drop down to the left of that input field that decides what the parameter is, x number, y number or z number. Field level validation should be dynamic to ensure the x number entered is 9 digits long, y number is 6 digits long and z number is 9 chars alpha-numeric.
2) The Faceted bit. Upon rendering the search results a "Refine Results" panel to the left shows the attribute types that can be used to filter (the 'facets"). Each of these can be expanded to show the specific values that will be the filter (the "facet values"), and each value has a count next to it of the number of times it exists within the current set of results. When a value is clicked it is removed from the facet list and shows as a search criteria item in a "Current Search" panel above, and the search results are narrowed. The user can "Undo" that search criteria, which returns it to the list of facet value and broadens the search results.
See www.dice.com for an example of point 2) in action.
This sounds like the perfect use case for JSF/RichFaces
I don't have an example to direct you to, but there are plenty of examples on the web of using JSF to:
1) Programmatically validate data with a custom validator
2) Conditionally render panels/facets based on backing bean values.
If I were you I'd proceed with a PoC. Feel free to post back to this forum with any questions.