That said, it's got issues.
I'm working on a huge number of products, all built on each other somehow, in a maze of dependencies. Some are support tools. Some are core libraries. Others' dependencies are ephemeral, things for which I just want things to be a certain way.
Since Sitemesh is such a core library for me, any issues it has tend to reverbrate up and down my entire development tree.
Well, last week I realised that inline decorators were brittle: if you decorated a resource that used an internal forward, well, that set the response state up such that no other resource could do a forward. That's annoying. It's not a killer, but golly, decorated resources shouldn't change the state of any resources decorated in the future - and the "main resource," the page being decorated in the first place, shouldn't affect the decorated pages either.
Filed, fixed with a patch on Opensymphony's issue tracker. (SIM-83, if you're interested.)
Now I'm in another rat hole.
Sitemesh is brittle on Tomcat, as well, because Tomcat uses outputstreams for static resources... and PrintWriters for dynamic resources. THIS one is more important, because it affects Tomcat users, which means "most servlet container users." I originally filed a bug on tomcat for this, but it was rightfully rejected. That means that Sitemesh itself needs to compensate.
I know how to fix it, but now I'm in a maze of the original code, which wasn't really anticipating the problem very well. It's maddening, and I'm very close to scrapping the entire section of code causing the problem, and repairing it from the beginning.
The hard part about this is time. I don't normally use Tomcat myself, so this is eating time I don't really have to spare. :(