4

我有一个像这样的对象

public class Employee {

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

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

}

在我的操作(我使用 Struts)中,我设置了对象 Employee 的参数。

request.setAttribute("emp",employeeInstance);

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

${emp.name}

输出是

托马索

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

4

1 回答 1

8

如果您使用符合 Servlet 3.0 规范的 Servlet 3.0 容器(如 Tomcat 7、Glassfish 3、JBoss AS 6 等web.xml),那么您将能够在 EL 中调用带有参数的方法。然后可以按如下方式解决您的特定情况:

${emp.getName('foo')}

如果您还没有使用 Servlet 3.0 或无法升级到它,那么您需要创建一个自定义 EL 函数,该函数接受 2 个参数:theEmployeename.

public static String getEmployeeName(Employee employee, String name) {
    return employee.getName(name);
}

然后按如下方式使用:

${my:getEmployeeName(emp, 'foo')}
于 2012-04-17T14:10:38.783 回答