【发布时间】:2011-05-28 14:27:40
【问题描述】:
我有一个数据表,它提供列表中的对象。在这个数据表中,我想使用像 p:columns(primefaces) 这样的标签,它提供了来自列表的字符串,代表字段的名称。
我现在需要一个子表达式才能使用动态字段名称,例如:
#{entry.#[column.fieldName}}
有没有可能在 JSF2 中做到这一点?
【问题讨论】:
我有一个数据表,它提供列表中的对象。在这个数据表中,我想使用像 p:columns(primefaces) 这样的标签,它提供了来自列表的字符串,代表字段的名称。
我现在需要一个子表达式才能使用动态字段名称,例如:
#{entry.#[column.fieldName}}
有没有可能在 JSF2 中做到这一点?
【问题讨论】:
如果条目具有列值的 get/set 访问器,您可以使用以下语法:
#{entry[column.fieldName]}
在 EL 中,您可以使用两种语法来访问对象的“lastname”属性的值:
#{myObject.lastname}
#{myObject["lastname"]}
你可以去JSPIntro at oracle.com看看
【讨论】:
不,EL 不能那样工作。
实现所需功能的方法如下:
#{entry.getField(column.fieldName)}
其中getField() 是一种使用反射(可能通过PropertyDescriptor)访问具有给定名称的字段的方法。但是,这是 EL 2.2 的功能,因此您需要一个非常新的 EL 实现,例如 Tomcat 7 提供的。
【讨论】: