Well I've been playing with JSF for awhile and while I like it, it has some major holes in it's capabilities. What I have hit so far:
- The error messages are useless more often than not. So you slowly add controls to your jsp page, test, and when you hit an error, back out the last change. So it's slow...
- You can set a new object as a backing bean - but it does not update it in the session map also - so you have to do both. And I am hoping it is not store the information in a 3rd place...
- If you do change the backing bean object, it does not update any other beans with references to it. So you must call each bean's setter for that object to update it.
- There is no way to have a backing bean called on a per page basis before rendering and then re-direct if necessary. Youe you can do a filter or phase listener - but that is not terribly object oriented.
- There is no way to add parameters to a url that you go to via <h:commandButton action="#{orderHandler.submitPayment}" value="Generate Invoice"/> where the backing bean method submitPayment() needs to set the url parameters. You can do it with a link, but not a button.
- f:selectItem does not have a rendered attribute and cannout have other tags inside a <f:selectItem...>...</f:selectItem>
- You have to get the htm library for htm:table/tr/td as the two standard grids are no where near as powerful.
- And for an array of objects where they need to go in a grid - you are limited to the h:dataTable - which itself is pretty limited.
- more to come...
But it is robust and the concept is good.
Do you find this useful? If so please check out Windward Reports.
