2010-06-24 11 views

risposta

53

Nessuno di entrambi è possibile con l'implementazione JSF standard. Ci sono 3 modi per risolvere questo problema:

  1. Scrivi da solo HTML. Un <h:panelGrid> riproduce fondamentalmente un codice HTML <table>. Fai lo stesso.
  2. Creare un renderer HTML personalizzato che supporti questo. Sarà comunque molto sudore e dolore.
  3. Utilizzare una libreria di componenti di terze parti che supporta questo.
+7

Hai provato il ricco: colonna in un pannello con colspan? Perché il documento dice: "Gli attributi" colspan "," rowspan "e" breakbefore "riguardano solo le colonne in un , non quelli in un ." –

1

Sono d'accordo con la risposta di BalusC e voglio aggiungere, che la libreria dei componenti primefaces JSF2 offre anche questa funzionalità se si utilizza la sua componente p:dataTable. Si chiama raggruppare lì.

1

assumere

a) un file di risorse messaggio con due voci:
key.row = </td> </tr> < tr> < td (ignorare gli spazi)
key.gt = >

b) row.xhtml

<ui:composition 
    xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:c="http://java.sun.com/jsp/jstl/core" > 

    <c:forEach begin="0" end="#{colspan-2}"> 
     <h:panelGroup /> 
    </c:forEach> 

    <h:panelGroup> 
     <h:outputText value="#{i18n['key.row']}" escape="false" /> 
     <h:outputText value=" colspan='#{colspan}' #{cellAttributes}" /> 
     <h:outputText value="#{i18n['key.gt']}" escape="false" /> 

     <ui:insert /> 
    </h:panelGroup> 

</ui:composition> 

quindi, ad esempio

<h:panelGrid columns="3"> 
    <h:outputText value="r1-c1" /> 
    <h:outputText value="r1-c2" /> 
    <h:outputText value="r1-c3" /> 

    <ui:decorate template="/row.xhtml"> 
    <ui:param name="colspan" value="3" /> 
    <ui:param name="cellAttributes" value=" align='center'" /> 

    <div>Hello!!!!!</div> 
    </ui:decorate> 
</h:panelGroup> 


stampa una tabella con 3 righe:

1) r1-c1, r1-c2, r1-c3

2) 3 vuoto celle

3) un centro allineato cella, con colspan 3 e contenente un ciao div ..

V.

+3

Neanche il modo in cui farei le cose. Anche se potrebbe rispondere alla domanda, prova anche a educare. Le cattive pratiche sono ... beh ... cattive. :) –

2

Usa: ricco: colonna colspan="2" di RichFaces

<rich:column colspan="2">       
<h:outputText value="Ingrese el texto de la imagen" /> 
</rich:column> 
+0

questa domanda riguarda JSF e non richfaces – specializt

0

Non v'è alcun modo per definire arco colonna nella griglia del pannello, ma se usato con saggezza si può farlo accadere da appena tag pianura. Un esempio che vorrei mostrarti.

<h:panelGrid columns="1" > 
<h:panelGrid columns="2"> 
    <h:commandButton image="resources/images/Regular5.jpg" action="booking/Create.jsf?faces-redirect=truebookingType=REGULAR"> 
    </h:commandButton> 
    <h:commandButton id="button2" image="resources/images/Casual2.jpg" action="booking/Create.jsf?faces-redirect=truebookingType=CASUAL"> 
    </h:commandButton> 
</h:panelGrid> 
<h:panelGrid columns="2"> 
    <h:commandButton id="button3" image="resources/images/Instant2.jpg" action="booking/Create.jsf?faces-redirect=truebookingType=INSTANT"> 
    </h:commandButton> 
    <h:commandButton id="button4" image="resources/images/Outstation6.jpg" action="booking/Create.jsf?faces-redirect=truebookingType=OUTSTATION"> 
    </h:commandButton> 
</h:panelGrid> 
<h:commandButton id="button5" image="resources/images/ShareMyCar.jpg" action="booking/Create.jsf?faces-redirect=truebookingType=OUTSTATION"> 
</h:commandButton> 

Notare che button5 campate due colonne date le dimensioni che richiede.

Problemi correlati