java - parametros - invocar métodos con parámetros en beans de clase interna anónimos en EL
parametros en java netbeans (2)
Si tengo un objeto de clase interno anónimo como este (donde Foo es una interfaz):
Foo foo = new Foo(){
@Override
public String hello(Object dummyArg){
return "hello, world.";
}
};
e intento llamar a Foo.hello
desde un jsp como este:
${foo.hello(''blah'')}
arroja:
javax.el.MethodNotFoundException: Unable to find method [hello] with [1] parameters
pero si no hay parámetros:
Bar bar = new bar(){
@Override
public String hello(){
return "hello, world.";
}
};
...
${bar.hello()}
funciona bien. ¿Por qué?
Esto no es un duplicado de 7121303 . Estoy preguntando específicamente sobre clases internas anónimas. Con una instancia de una clase regular, funciona con cualquier cantidad de parámetros.
Posiblemente, necesita crear una función EL a través de la cual pueda pasar el parámetro. ( http://blog.idleworx.com/2010/04/custom-tags-and-custom-el-functions-in.html )
el soporte para pasar argumentos de métodos e invocar métodos no buscadores se introdujo en EL 2.2. Habilite EL 2.2 en tomcat ( http://code2inspire.wordpress.com/2010/11/05/how-to-enable-el-2-2-on-tomcat-6/ )
No sé qué entorno estás usando pero probé con tomcat7.0.40 y tu código funciona bien.
Una posibilidad es que puede haber problemas con pasar Cadena cuando se espera un Objeto. Puede ser un análisis estricto. Puede intentar lo siguiente: Almacene el argumento en pageContext y úselo para pasar el valor a la función de la siguiente manera.
<%
pageContext.setAttribute("argObj", "blah");
%>
${foo.hello(argObj)}