Cuando escribo Java webapps, generalmente uso etiquetas JSTL. Creo que estas etiquetas son geniales, a excepción de una cosa que me molesta: mientras que el lenguaje de expresión le permite acceder a las propiedades de frijol, no le permite llamar a sus métodos.Llamadas de método en EL
En la versión 1.0, ni siquiera fue posible obtener la longitud de una cadena o la cantidad de elementos de una colección. A partir de la versión 1.1, la función fn: longitud se ha añadido, por lo que puede hacer cosas como esta:
...
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
<c:if test="${fn:length(str) > 10}">
...
</c:if>
...
¿Qué es más detallado y más fea (en mi humilde opinión es que):
...
<c:if test="${str.length() > 10}">
...
</c:if>
...
Parece que JSTL 2.0 le permitirá definir nuevas funciones, pero necesitará escribir una clase específicamente para ese propósito, en la cual definirá sus métodos (estáticos) y también necesitará escribir un archivo TLD que lo haga ser incluido en cada jsp que usará estas funciones.
Ya sea que defina una función personalizada o use otra solución alternativa, tiene mucho código adicional para escribir.
He leído en alguna parte que el JCP ha rechazado voluntariamente la invocación de métodos desde el lenguaje de expresiones.
¿Alguien puede ayudarme a entender por qué diablos el JCP nos está haciendo esto?
Esto es algo que siempre ha horneado completamente mis fideos. No puedo entender por qué no se puede permitir esto en EL –