Jsf 2 构建动态EL表达式字符串

Jsf 2 构建动态EL表达式字符串,jsf-2,el,Jsf 2,El,我用jsf构建了一个动态数据表。 我从bean中获取列描述,并使用c:forEach创建表。 columndescription中存储了应显示的属性的名称。 我使用h:outputText value=“#{record[cd.property]}”/>在表中显示值 现在我有一些列引用子实体,因此EL表达式应该是这样的: record.property.property2.property3 or record[property].property2.propert3 是否可以为此类子

我用jsf构建了一个动态数据表。 我从bean中获取列描述,并使用
c:forEach
创建表。 columndescription中存储了应显示的属性的名称。 我使用
h:outputText value=“#{record[cd.property]}”/>
在表中显示值

现在我有一些列引用子实体,因此EL表达式应该是这样的:

    record.property.property2.property3 or record[property].property2.propert3
是否可以为此类子实体创建EL表达式,或者是否有其他可能来计算列的值

谢谢你的帮助

问候,, 塞维林

编辑进一步解释:


我将类似“property.property2.property3”的字符串存储在bean中,并希望将其用作EL表达式。所以我可以动态创建列

您可以使用converter,将路径作为属性发送给converter,并将值作为字符串返回:

@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
    return null;
}

@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
    String path = (String) arg1.getAttributes().get("path");
    if (path != null) {
        try {
            return BeanUtils.getProperty(arg2, path);
        } catch (Exception ex) {
            LoggingUtil.logMessage(ex, "converter failed for path = " + path + " for object = " + arg2.getClass());
        }
    }
    return null;
}

谢谢你的帮助,但我可能没有解释清楚(对不起)。我想在运行时创建EL表达式。因此,我想从bean中获取字符串“record.property.property2.property3”,并将其用作EL-Epression。(我更新了问题)这方面有什么新的信息吗?我有一个搜索
Foo
的组件。现在我需要同样的
BarHasFoo
,基本上我必须复制整个组件并用
foo.property
替换所有
property
。其余的组件和逻辑是相同的。