Jsf 如何访问EL变量并将其作为参数传递给EL中的函数?
我想在一个bean上调用一个函数,在jsp中使用EL将一个参数传递给它。 问题在于,它不允许出现以下情况: “Jsf 如何访问EL变量并将其作为参数传递给EL中的函数?,jsf,jsp-tags,el,Jsf,Jsp Tags,El,我想在一个bean上调用一个函数,在jsp中使用EL将一个参数传递给它。 问题在于,它不允许出现以下情况: “${teacherBean.certificationFor(${SpecialField})” 问题是我想迭代一个数组,并为作为参数传递的数组中的所有值调用函数certificationFor。 我通过以下方式获取数组中的值: 所以基本上我想做一些事情,比如: ${teacherBean.certificationFor(${SpecialField}) 但我不能那样做。 我可以用其
${teacherBean.certificationFor(${SpecialField})
”
问题是我想迭代一个数组,并为作为参数传递的数组中的所有值调用函数certificationFor。
我通过以下方式获取数组中的值:
所以基本上我想做一些事情,比如:
${teacherBean.certificationFor(${SpecialField})
但我不能那样做。
我可以用其他方式做这个吗
我是EL的新手。:)
非常感谢您的帮助。那么:
${teacherBean.certificationFor(particularField)}
您到底想在何处执行此操作?为了什么?只是为了获取显示值?至少,在Java EE 6之前的标准EL中,您不能这样传递方法参数。在中或中,您可以这样做。语法如下:
${teacherBean.certificationFor(particularField)}
请注意,不能嵌套EL表达式,EL表达式本身已经是一个完整的表达式
但是,在标准EL实现中,您可以使用大括号符号通过键访问映射
值。因此,如果您有映射认证
,其中键对应于特定字段
和相关值:
private Map<String, String> certifications = new HashMap<String, String>();
public Map<String, String> getCertificationFor() {
return this.certifications;
}
这在幕后决定
teacherBean.getCertificationFor().get(particularField)
我认为在标准EL中,除了定义封装在EL函数中的函数外,没有其他选择 阅读:靠近底部的 文件
但是正如BalusC已经提到的,如果您可以使用另一个EL实现,如果您能够将这种依赖添加到应用程序中如果您正在访问一个更好地表示为单独功能的通用功能,那么您可以编写如下内容:
${certificationFor[teacherBean][particularField]}
其中certificationFor映射到扩展类的certificationFor类。您实现了结果(对象[]args)
方法中的功能。此方法的args是传递给EL中${certificationFor}
对象的args
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函数的一种方法
如果您感兴趣,可以在此处查看完整代码和代码片段:
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 ....;
}
}