There are certainly
alot of choices out there.
First of all, IBM provides a Struts wrapper for the portal, so you can port your existing Struts to have a portlet interface with just a little bit of work.
With IBM, the focus going forward really seems to be
JSF in the portal world, so, I always go with JSF for new, complex portlet interfaces.
Remember, not every portlet is a framework portlet. Using the JSR168 API alone to deliver content is just fine. On that topic, here are a few other JSR168 portlet developement best practices for WebSphere, and any other portal server such as liferay or JetSpeed2 for that matter:
Best Practices for Portlet Development The delivery of content to portlets should be services out as much as possible, whether that is leveraging the actual IBM PortletService capabilities, or having the portlets interact with a web service to access data. The web service can then be implemented just about any way you like, as it is hidden from the portlet. Hibernate/Spring/EJB2.x, it doesn't matter if the portlet/client only interacts with an interface.
Those are just some ideas. Let me know what you think.
-Cameron McKenzie
[ April 22, 2007: Message edited by: Cameron W. McKenzie ]