可以在jsp中使用带有参数的$ {object.method}吗?

Tom*_*ffi 4 java jsp el

我有一个像这样的对象

public class Employee {

  public String getName() {
    return "tommaso";
  }

  public String getName(String name) {
    return "tommaso "+name;
  }

}
Run Code Online (Sandbox Code Playgroud)

在我的动作中(我使用Struts),我设置了一个对象Employee的参数.

request.setAttribute("emp",employeeInstance);
Run Code Online (Sandbox Code Playgroud)

之后在jsp中我编写了这段代码

${emp.name}
Run Code Online (Sandbox Code Playgroud)

而输出是

tommaso

如果我想使用第二种方法public String getName(String name) { ... },使用相同的正式文本${emp. ...something passing a parameter... },是否可能?

Bal*_*usC 7

如果您使用web.xml符合Servlet 3.0规范的Tomcat 7,Glassfish 3,JBoss AS 6等Servlet 3.0容器,那么您将能够在EL中调用带参数的方法.您的具体案例可以解决如下:

${emp.getName('foo')}
Run Code Online (Sandbox Code Playgroud)

如果您尚未使用Servlet 3.0或无法升级到它,那么您需要创建一个自定义EL函数,该函数有两个参数:the Employeename.

public static String getEmployeeName(Employee employee, String name) {
    return employee.getName(name);
}
Run Code Online (Sandbox Code Playgroud)

然后你使用如下:

${my:getEmployeeName(emp, 'foo')}
Run Code Online (Sandbox Code Playgroud)