2010-06-24 9 views

Odpowiedz

53

Żadne z nich nie jest możliwe przy standardowej implementacji JSF. Istnieją 3 sposoby, aby to naprawić:

  1. Napisz sam HTML. A <h:panelGrid> zasadniczo renderuje HTML <table>. Zrobić to samo.
  2. Utwórz niestandardowy program renderujący HTML, który obsługuje tę funkcję. Będzie jednak dużo potu i bólu.
  3. Użyj biblioteki komponentów innej firmy, która obsługuje tę funkcję.
+7

Czy wypróbowałeś bogatą: kolumnę w panelu z colspanem? Ponieważ dokument mówi: "Atrybuty" colspan "," rowspan "i" breakbefore "wpływają tylko na kolumny w , a nie na ." –

1

zgadzam się z odpowiedzią BalusC i chcę dodać, że biblioteka komponentów Primefaces JSF2 oferuje również tę funkcję, jeśli używasz jej p:dataTable komponent. Nazywa się tam grupowanie.

1

zakładać

a) dokumentację wiadomość zasób z dwoma wejściami:
key.row = </td> </tr> < tr> < td (ignoruje spacje)
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> 

wówczas przykładowo

<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> 


drukuje tabelę 3 z rzędów:

1) R1-C1, R1-C2, R 1-C3

2) 3 puste komórki

3) centrum wyrównane do komórki, posiadające colspan 3 i zawierające hello div ..

V.

+3

Nie tak jak bym to zrobił. Chociaż może odpowiedzieć na to pytanie, spróbuj także kształcić. Złe praktyki są ... cóż ... złe. :) –

2

Zastosowanie: bogaty: kolumna colspan="2" z RichFaces

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

to pytanie dotyczy JSF, a nie richfaces – specializt

0

Nie ma sposobu, aby określić przedział kolumny w siatce panelu, ale jeśli używane mądrze można tego dokonać jedynie po prostu tagu. Jeden przykład, który chciałbym ci pokazać.

<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> 

Uwaga Button5 obejmuje dwie kolumny ze względu na wielkość wymaga.