2011-05-28 33 views
1

我有一个数据表,它提供了列表中的对象。在这个数据表中,我想使用一个像p:columns(primefaces)这样的标签,它提供了一个表示字段名称的列表中的字符串。Java统一表达式语言子表达式

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

#{entry.#[column.fieldName}} 

是否有可能在JSF2做到这一点?

回答

2

如果条目有get/set访问列的值提供,你可以使用这个语法:

#{entry[column.fieldName]} 

在EL可以使用两种语法来访问对象的“姓氏”属性的值:

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

你可以去看一下JSPIntro at oracle.com

+0

我刚才你呃类似的东西,它的工作原理,我只是不确定,因为无处不在的术语subexpression是在参考文献中提到,并且之前我从未在生产中使用这种功能。 – 2011-05-28 15:55:28

-1

不,EL不能这样工作。

,你可以做些什么来实现所需的功能会是这样:

#{entry.getField(column.fieldName)} 

其中getField()是使用反射(可能通过PropertyDescriptor)具有给定名称访问字段的方法。然而,这是一个EL 2.2的功能,所以你需要一个相当最近EL implemetation,如Tomcat的7