Java Unified Expression Language子表达式

时间:2011-05-28 14:27:40

标签: dynamic jsf-2 el

我有一个数据表,它提供列表中的对象。在此数据表中,我想使用像p:columns(primefaces)这样的标记,它提供表示字段名称的列表中的字符串。

我现在需要一个子表达式才能使用动态字段名称,如:

#{entry.#[column.fieldName}}

有可能在JSF2中执行此操作吗?

2 个答案:

答案 0 :(得分:2)

如果条目具有列值的get / set访问器,则可以使用以下语法:

#{entry[column.fieldName]}

在EL中,您可以使用两种语法来访问对象的“lastname”属性的值:

#{myObject.lastname}
#{myObject["lastname"]}

您可以查看JSPIntro at oracle.com

答案 1 :(得分:-1)

不,EL不能那样工作。

您可以采取以下措施来实现所需的功能:

#{entry.getField(column.fieldName)}

其中getField()是一种使用反射(可能通过PropertyDescriptor)访问具有给定名称的字段的方法。但是,这是一个EL 2.2功能,因此您需要一个非常新的EL实现,例如Tomcat 7提供的。