Como exibir todos os elementos de dataTable JSF em uma única linha?

Pessoal,

Alguém sabe como mudar o comportamento do dataTable para exibir os elementos de uma coleção em colunas (única linha) em vez de linhas? Tenho uma lista de Strings e preciso colocá-las uma atrás da outra na horizontal, como se fosse um menu horizontal.

O JSP abaixo mostra a lista verticalmente:

<%@ taglib uri=“http://java.sun.com/jsf/core” prefix=“f” %>
<%@ taglib uri=“http://java.sun.com/jsf/html” prefix=“h” %>

Liste livros
             <h:dataTable rules="cols" rows="1" value="#{menuQuadro.itens}"  var="item">

                <h:column>
                    <h:outputText value="#{item.value}" />
                </h:column>
                </h:dataTable>
         </h:panelGrid>

    </body>

Obrigado,

Geraldo.

Cara o dataTable ele é um componente para exibir os dados em tabela, se a tua lista tiver uma linha, ele vai exibir em uma única linha se tiver 100 vai mostrar as 100

Dê uma olhada no panelGrid, tem um propósito semelhante ao do dataTable, mas você tem mais controle!

Use facelets.

Na declaração coloque <%@ taglib uri="http://java.sun.com/jsf/facelets" prefix="ui" %>

E no código <ui:repeat value="#{menuQuadro.itens}" var="item"> <h:outputText value="#{item.value}" /> </ui:repeat>

Na verdade o cara só não quer que mostre um tal de border-bottom para cada linha iterada. haha
Mas tudo bem, use o Facelets mesmo.

Prezados,

Ainda não resolvi o problema. Optei em fazer uma implementação simples e depois de ler um monte de manuais fiz o menu da minha aplicação em tiles. E nele os arquivos precisam estar com .jsp.

Das propostas até o momento, tentei fazer a sugestão de usar facelets, mas não tive sucesso. Olhei também a sugestão do panelgrid, mas não vi como referenciar minha coleção como no dataTable.

Molinar,

Sobre sua sugestão:

"Na verdade o cara só não quer que mostre um tal de border-bottom para cada linha iterada. haha
Mas tudo bem, use o Facelets mesmo. "

Como faço para desabilitar o tal border-bottom. Me dê mais detalhes sobre sua idéia, ou um manual, que me leve de modo mais simples a solução.

Obrigado,

Geraldo.

Pessoal,

Como sou júnior na tecnologia não conhecia a opção forEach do JSTL. Resolvi o problema conforme o código abaixo:

<%@ taglib uri=“http://java.sun.com/jsf/html” prefix=“h” %>
<%@ taglib uri=“http://java.sun.com/jsf/core” prefix=“f” %>
<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>

<f:subview id=“topo”>

<h:panelGrid columns=“20” styleClass=“links” columnClasses=“linksColumn”>



<c:forEach items="#{menuQuadro.itens}" var=“item” >

</c:forEach>


<h:commandLink>
<h:outputText value="#{item.label} “/>
<f:param name=“item” value=”#{item.value}"/>
</h:commandLink>

</h:panelGrid>
    </body>

</f:subview>

Obrigado,

Geraldo.

Use o component <h:dataTable> e abilite seu atributo border com valor igual a 0.

algo assim

<h:dataTable border=“0” value="…" var="…" }

Olá,

Não funcionou com border=“0” mas valeu a intenção.

Vou manter a solução anterior usando o JSTL.

Obrigado,

Geraldo.