Basically, it seems to me like Java web development uses XML as a dynamic programming language when they're trying to do something Java's not well-suited for. The issue is that XML has absolutely no type-checking at all, and so you end up with errors that make absolutely no sense when the only issues you have are simple typos.
The problem is even worse because you seem to end up having to specify the same information in so many different places, and having mistakes in just one of those will prevent anything from working.
I am sure there are ways around this, but the whole point is that if you're using a framework like Rails, you don't need to deal with any of this. It all just works, and having wasted months of time on Java web dev, I want to deal with a system that just works, not a system that requires ten or twenty kludgey three- and four-letter band-aids to get it to behave intelligently.