4

我有以下 EL 表达式,它引用了 var 属性的属性:

empty _item.addressLine1

addressLine1是 Address bean 上的 String 属性,可通过personBean.person.addresses返回Set<Address>.

这是上下文中的 EL 表达式:

<h:dataTable id="personBeanPersonAddresses" styleClass="data-table" value="#{forgeview:asList(personBean.person.addresses)}" var="_item">
    <h:column>
        <f:facet name="header">
            <h:outputText value="Address Line 1"/>
        </f:facet>
        <h:link outcome="/address/view">
            <f:param name="id" value="#{_item.id}"/>

            <h:panelGroup rendered="#{!empty _item.addressLine1}">
                <h:outputText id="itemAddressLine1" value="#{_item.addressLine1}"/><br/>
            </h:panelGroup>
        </h:link>
    </h:column>
    ....

问题是表达式总是返回 false,无论 addressLine1 是否为空字符串。好像要确认这一点,Eclipse 中的 facelet Validator 会产生以下警告:

这个空表达式总是计算为假。对于空运算符,只有字符串、映射、数组和集合具有有意义的值

但我不确定如何解决这个问题。我正在使用 jboss-el-api_2.2_spec-1.0.0.Final 运行 JBoss AS 7.1

4

2 回答 2

4

到目前为止,代码看起来还不错。此警告无效。如果它困扰您,请关闭 Eclipse 中的 EL 验证。

至于具体的问题,很可能它#{_item.addressLine1}本身真的是空的。您需要确保这不是空的。

于 2012-10-23T19:55:40.583 回答
2

您也可以只忽略此特定警告:Web -> JavaServer Faces Tools -> Validator

  • 常量折叠和未使用的代码(部分)。空运算符始终解析为 false 类型(忽略)。
于 2014-10-29T11:06:16.860 回答