这个el表达有什么不对?

时间:2011-05-31 13:33:40

标签: java el

<ui:repeat value="#{admin.detailTypesList}" var="detailType">
<h:outputText value="#{admin.getDetailTypeTranslation('ContactDetailType_'+detailType)}"/>
</ui:repeat>

表达el:

#{admin.getDetailTypeTranslation('ContactDetailType_'+detailType)}

传递给getDetailTypeTranslation的参数为'ContactDetailType_'(不含detailType值)

我做错了什么?

2 个答案:

答案 0 :(得分:5)

在EL中,+仅为和运算符。您可以使用<ui:param>创建一个新变量,该变量存在与EL表达式连接的字符串,然后使用新变量。

<ui:repeat value="#{admin.detailTypesList}" var="detailType">
    <ui:param name="contactDetailType" value="ContactDetailType_#{detailType}" />
    <h:outputText value="#{admin.getDetailTypeTranslation(contactDetailType)}"/>
</ui:repeat>

请注意,此问题与JSF无关,但与EL有关。

答案 1 :(得分:0)

jsf的EL实际上没有concat操作('+')。您应该编写一个函数来执行它或使用bean方法。