在EL中使用匿名内部类bean上的参数调用方法

use*_*146 9 java jsp anonymous-inner-class el

如果我有一个这样的匿名内部类对象(其中Foo是一个接口):

Foo foo = new Foo(){
  @Override
  public String hello(Object dummyArg){
    return "hello, world.";
  }
};
Run Code Online (Sandbox Code Playgroud)

我尝试Foo.hello从这样的jsp 调用:

${foo.hello('blah')}
Run Code Online (Sandbox Code Playgroud)

它抛出:

javax.el.MethodNotFoundException: Unable to find method [hello] with [1] parameters
Run Code Online (Sandbox Code Playgroud)

但如果没有参数:

Bar bar = new bar(){
  @Override
  public String hello(){
    return "hello, world.";
  }
};
Run Code Online (Sandbox Code Playgroud)

...

${bar.hello()}
Run Code Online (Sandbox Code Playgroud)

它工作正常.为什么?

这不是7121303的副本.我正在特别询问匿名的内部课程.使用常规类的实例,它可以使用任意数量的参数.

Ser*_*hin 1

可能,您需要创建 EL 函数,通过该函数可以传递参数。(http://blog.idleworx.com/2010/04/custom-tags-and-custom-el-functions-in.html

EL 2.2 中引入了对传递方法参数和调用非 getter 方法的支持。在 tomcat 上启用 EL 2.2 ( http://code2inspire.wordpress.com/2010/11/05/how-to-enable-el-2-2-on-tomcat-6/ )

  • “对于常规类的实例,它可以使用任意数量的参数” (2认同)