如何访问 EL 变量并将其作为参数传递给 EL 中的函数?

Anu*_*bra 3 jsf jsp-tags el

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

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

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

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

Bal*_*usC 5

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

${teacherBean.certificationFor(particularField)}
Run Code Online (Sandbox Code Playgroud)

请注意,您不能嵌套 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;
}
Run Code Online (Sandbox Code Playgroud)

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

${teacherBean.certificationFor[particularField]}
Run Code Online (Sandbox Code Playgroud)

这在幕后解决

teacherBean.getCertificationFor().get(particularField)
Run Code Online (Sandbox Code Playgroud)