Which Java web framework best supports the "web UI designer" role? That is, which framework lets you:
- Use popular web design tools (XHTML validators, CSS editors, &c.) on your views/pages
- View changes without running on a server
- Rapidly prototype different UI options
- Supports a (somewhat) clean separation between "developer" and "designer" (terminology intentionally vague)
I, like many others, have found these capabilities sorely lacking in my large, legacy Struts 1.x apps that use lots of JSP fragments and includes.
I've decided to port my apps to a JSR-168/268 portal environment, but have not decided on what Java web framework will power the portlets. I'm open to any kind (action-based, component-based, etc) and a key criterion is how well it supports the role described above.
I'm intrigued by Tapestry, which claims that its views are XHTML-compliant pages (that simply have extra Tapestry-specific attributes added onto them to be processed at runtime). This sounds like it would play well with a web UI designer's toolkit. However, I'd like to know if this is what actually happens in the real world, or if compromises are necessary.
Of course, if there's something much better than Tapestry, I'd love to hear about it!
Try Wicket. It has all you need.
You might consider ZK with JSPs: http://zkoss.org/ It's all about rapid-prototyping. Many things are design-y and really easy, BUT extending widgets is hard. Also, giant webapps may develop a performance problem if you don't know exactly what you're doing.
If your enterprise computing requirements are complex, the fact that Tapestry has a built-in IoC container really helps out. However, this also contributes to Tapestry's high learning curve if you are not familiar with this type of programming. Changing a pure HTML page into a Tapestry page is easy, since Tapestry tags are as non-intrusive as it gets. Check out Jumpstart for examples.
I think Spring MVC is better choice for you.
It will be familiar for you (it is action framework), and it supports all you need.
If you want to try OO/component framework, try Apache Click. Click is Tapestry-like, but much more easy than Tapestry and Wicket.
I've had pretty good luck with JSPs using JSTL and CSS, Spring, and SiteMesh. SiteMesh in particular is terrific, because it allows you to compose pages without includes. It uses the Decorator and Composite patterns to good advantage.
Web designers created pages using Dreamweaver using HTML and CSS. Developers would take those and add in the dynamic bits using JSTL. Headers, footers, and the rest were added in using SiteMesh. The separation of concerns meshed well.
The Stripes MVC framework could deliver all you’re needs. It’s an easy to use web framework and as it’s action based it’s close to HTTP and the generated HTML, thus giving you full control over you’re HTML.
As view technology it supports Freemarker or JSP with custom Stripes JSP tags (no scriplets!). Both solutions are fully XHTML compliant.
The Stripes framework supports rapid prototyping. After editing the views, there is no need to recompile code, not even a server restart is needed, just reload the page.
Separation of concerns is excellent. Just dumb views that generate what the controller(s) order it to do. Controller code is also simple and straightforward, there is no need for extensive mappings in XML files, all is excellently defaulted and configurable by Java 5 @annotations. (See: Wikipedia example code).
Don’t know much about portlets, but there is an Liferay implementation.
I lately tried and I'm very happy with RichFaces, wich you can look how presents here,
connected with facelets. Works good for me ;)