I use both: Spring-MVC (2.5) and Seam
Because Seam uses Java Server Faces Technology (A server-side based Technology), behind the scenes, It is better designed for small and medium applications. (Each JSF view Tree is stored on Session - You can store on client side, but be aware bandwidth issues). But it has some advantages:
Typically web application uses the following path
view >> controller >> service >> domain
With Seam, you can get
view >> service >> domain
Or even (by using mediator pattern provided by Seam Framework)
No controller, No service
view >> domain
Besides that,
- JSF 2 supports JSR 303 - Bean Validation
- You can use Wicket instead of JSF if you want
- Conversation and Business process management support
- Use can use Spring DI if you want
Spring-MVC
It has a powerful web-Tier infrastructure
- Handler Mapping (It chooses which Controller should handle the request)
- View resolver (It chooses which View should render the response)
- It can be used for large applications
- Powerful data-binding
- Spring 3.0 supports Annotation-based Controller (JSR 303 - Bean Validation, coming soon)
But i still not use Spring 3.0 because
- By using (and extending when needed) MultiActionController, i can get convention over configuration without no xml settings to define your Controller (You just need to set up your MultiActionController as @Component)
- SimpleFormController provides similar behavior found in Spring 3.0 annotation based controller
...
About The learning path, i think both are similar.