When I write Java webapps, I usually use JSTL tags. I think that these tags are great, except for one thing that pisses me off: while the expression language allow you to ac
I expect the goal was to enforce strict model-view separation, as in StringTemplate.
The idea is pretty simple: If you don't have access to methods, then you are forced to compute all of your data in the controller and then just format it in the view. Of course they muddied the message by allowing you to have access to functions and they were not helped by the fact that it is not as easy to build up lists of maps of tuples (read: structured data without classes) in Java as it is in Python, Ruby, etc.
Anyway, here's an article on writing a tag that allows you to call arbitrary methods, might find it helpful.
The feature you want is defined in JSR 245 (more here). If you want it now, go download it from the UEL project or an alternative implementation (e.g. JUEL). If you need to wait for it to be part of the standard, it will be included in JEE6. Until then... well, you already know your options.
Have a look at Seam! With Seam, EL became the way it should be. Calling methods even with parameters works like a breeze.
Can anyone of you help me understand why the hell is the JCP doing this to us?
It's part of the bondage and discipline mindset of a certain subset of Java programmers that knows The One True Way that everyone should author applications.
You can't be trusted have a full-powered language at your disposal when writing templates, because you might abuse it to mix together business logic and presentation like those awful, uncouth PHP coders do. Eurgh, imagine!
The programmer is the enemy, and must be prevented from doing Evil. It might turn out that the programmer is actually just you trying to debug something, or put a quick hack in to get the app running temporarily. Or it might turn out that there is such a thing as presentation logic, and making you move that stuff out into a bunch of tag and bean classes in your application is just as unpleasant as the other way around.
But it doesn't matter! It's well worth inconveniencing you to serve the purpose of defending Java's chastity.
[Sorry for the snark, but it was already quite a ranty question eh.]
PS. There's always Groovy I suppose.