Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Condicional dentro de um dataList

Olá galera, gostaria de saber se é possível colocar uma condicional dentro de para mostrar por exemplo o nome concatenado com o e-mail somente se o e-mail existir.

<p:dataList value="#{autorBean.autores}" var="autor" type="definition">
                <f:facet name="header">Autores</f:facet>

                <h:commandLink value="alterar"  title="Alterar" styleClass="ui-icon ui-icon-pencil" style="float:left;margin-right:10px;margin-left:10px;" action="#{autorBean.carregar(autor)}" />
                <h:commandLink value="remover" title="Remover" styleClass="ui-icon ui-icon-trash" style="float:left;margin-right:10px" action="#{autorBean.remover(autor)}" />

                 #{autor.nome} - #{autor.email} 
            </p:dataList>
1 resposta
solução

É possível criar um getter customizado na classe Autor, por exemplo:

public String getNomeComEmail() {
//Pode utilizar StringUtils.isNotBlank da org.apache.commons.lang
    return email != null && !email.isEmpty()  ?  nome + " - "+ email :  employeeName;
}

então na página xhtml referencia a propriedade

#{autor.nomeComEmail}

ou renderizar o conteudo conforme a condição utilizando fragment do facelet:

<ui:fragment rendered="#{autor.email ne null and autor.email ne ''}">
            #{autor.nome} - #{autor.email}
</ui:fragment>
<ui:fragment rendered="#{autor.email eq null or autor.email eq ''}">
            #{autor.nome} 
</ui:fragment>

Adicionar namespace:

xmlns:ui="http://xmlns.jcp.org/jsf/facelets"

Mais informações: https://stackoverflow.com/questions/17102614/concat-two-string-in-jsf-el-expression