I have an app that does that. What I did, however, was make each tree node a hyperlink rather than coding navigation logic in a backing bean. You should be able to use commandLinks, but in my case, I used raw URLs, since I wanted them to be bookmarkable. I used PrettyFaces to handle the bookmarkable URL requests.
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