3

我想在 bean 上调用一个函数,并使用 EL 在 jsp 中传递给它的参数。问题是它不允许类似:“ ${teacherBean.certificationFor(${particularField})

问题是我想遍历一个数组并为数组中作为参数传递的所有值调用函数certificationFor。我通过以下方式获取数组中的值:

所以基本上我想做类似的事情: ${teacherBean.certificationFor(${particularField}) 但我不能这样做。我可以用其他方式吗?

我是 EL 的新手。:) 任何帮助表示赞赏。

4

4 回答 4

5

你到底想在哪里做那件事,为了什么?只是为了获得展示价值?至少,在 Java EE 6 之前的标准 EL 中,您不能像这样传递方法参数。在JBoss-ELJava EE 6 EL中,您可以做到这一点。那么语法就是:

${teacherBean.certificationFor(particularField)}

请注意,您不能嵌套 EL 表达式,EL 表达式本身已经是一个完整的表达式。

然而,在标准 EL 实现中,您可以Map使用大括号符号通过键访问值。因此,例如,如果您有一个Map<String, String> certifications键对应的位置particularField和相关值的值:

private Map<String, String> certifications = new HashMap<String, String>();

public Map<String, String> getCertificationFor() {
    return this.certifications;
}

那么您可以使用以下符号:

${teacherBean.certificationFor[particularField]}

这在幕后解决

teacherBean.getCertificationFor().get(particularField)
于 2009-12-25T14:37:00.313 回答
1

我认为在标准 EL 中,除了定义包含在 EL 函数中的函数之外,您别无选择;

阅读: http: //java.sun.com/j2ee/1.4/docs/tutorial/doc/JSIntro7.html靠近文档底部;

但是正如 BalusC 已经提到的,如果你有能力将这种依赖添加到你的应用程序中,你是否可以使用另一个 EL 实现

于 2009-12-25T14:48:02.217 回答
0

如果您正在访问一个可以更好地表示为单独函数的通用功能,那么您可以将其编写如下:

${certificationFor[teacherBean][particularField]}

其中,certificationFor 映射到扩展ELMethod.java类的 CertificationFor类。您在result(Object[] args)方法中实现功能。此方法的参数是您传递给${certificationFor}EL 中的对象的参数。

public class CertificationFor extends ELMethod {
  public Object result(Object[] args) {  
    TeacherBean teacherBean = (TeacherBean) args[0];  
    String property = (String) args[1];

    // your implementation goes here
    return ....;
  }
}  

诀窍是将您的对象用作映射的链式映射,这是将多个参数传递给 EL 函数的一种方法。

如果您有兴趣,可以在这里查看完整的代码和代码片段:http: //www.vineetmanohar.com/2010/07/how-to-pass-parameters-in-el-methods/

于 2010-07-14T14:26:42.080 回答
0

关于什么:

${teacherBean.certificationFor(particularField)}
于 2009-12-25T14:36:14.433 回答