Pergunta

Eu quero exibir dados usando as tags h:dataTable em JSF Os dados que eu estou exibindo tem que estar em um formato como este:

Name:   XXXX
ID:  8989
Age:    32

Já vi vários exemplos na web que dizer-lhe como para exibir o dados como este:

Nome ID Idade XXX 8989 32

Uma vez que a tag dataTable só tem um h:column sub tag e NO h:row Estou tendo problemas com isso. Existe uma maneira melhor de fazer isso? Eu tenho implementado o primeiro formatar mencionei usando h:datable e h:column, então primeiro eu só escrever para fora todos os cabeçalhos de coluna na coluna 1 e depois eu escrevo todos os valores em column2. O problema que estou enfrentando é que quando um dos valores está em branco o valor seguinte será impresso em seu lugar e os dados aparecem errado, isso é realmente um problema de formatação. Quando os dados está em branco deve deixar espaço para ele e, em seguida, imprimir o próximo valor na próxima linha. Espero que eu estou fazendo sentido, qualquer pensamento será muito apreciado.


Eu tentei adicionar o seguinte:

<h6><h:outputText value="#{empty imeiInfo.userEmail ? '&#160;' : imeiInfo.userEmail}"></h:outputText></h6><br/>

Mas há um erro de sintaxe no presente que eu não consigo descobrir, a mensagem que recebo é:

Erro de sintaxe na EL

Todas as idéias? Obrigado.

Foi útil?

Solução

É apenas para um não-repetição de dados? Se assim for, o uso <h:panelGrid>

Por exemplo:

<h:panelGrid columns="2">
   <h:outputText value="Name:"/>
   <h:outputText value="#{person.name}"/>
   <h:outputText value="ID:"/>
   <h:outputText value="#{person.id}"/>
   <h:outputText value="Age:"/>
   <h:outputText value="#{person.age}"/>
</h:panelGrid>

Se é para repetir dados (isto é. Múltiplas 'pessoas'), então você tem um número de opções dependendo do que outras bibliotecas que você está usando. Por exemplo:

1: Construa sua própria tabela usando Facelets <ui:repeat> (você poderia fazer o mesmo com <c:for>). Por exemplo:

<table>
    <ui:repeat value="#{myBean.persons}" var="person">
        <tr>
           <td>
              <h:outputText value="Name:"/>
           </td>
           <td>
              <h:outputText value="#{person.name}"/>
           </td>
        </tr>
        <tr>
           <td>
              <h:outputText value="ID:"/>
           </td>
           <td>
              <h:outputText value="#{person.id}"/>
           </td>
        </tr>
        <tr>
           <td>
              <h:outputText value="Age:"/>
           </td>
           <td>
              <h:outputText value="#{person.age}"/>
           </td>
        </tr>
        <tr>
           <td colspan="2">
              &#160;
           </td>
        </tr>
    </ui:repeat>
</table>

EDIT: Eu não tentei isso, mas você deve ser capaz de cercar o no primeiro exemplo (<h:panelGrid>) com um <c:for> para renderizar elementos repetidos. O <c:for> é processado antes do <h:panelGrid>. Deve funcionar.

Outras dicas

Eu não tenho certeza de entender como você deseja tornar sua mesa. Eu acho que nos ajudaria se você poderia fornecer o código JSF de sua mesa ...

No entanto, sobre este ponto:

Quando os dados está em branco deve sair espaço para ele e, em seguida, imprimir a próxima valor na linha seguinte

talvez você pode tentar algo como isso:

<h:outputText value="#{empty aRecord.name ? '&#160;' : aRecord.name}"/>

Este código irá processar um espaço inquebrável se o nome do registro está vazio, caso contrário ele irá processar a name do registro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top