Как установить colspan
и rowspan
в JSF <h:panelGrid>
?
Как установить colspan и rowspan в JSF panelGrid?
Ответы (6)
Ни то, ни другое невозможно при стандартной реализации JSF. Есть 3 способа это исправить:
- Напишите простой HTML самостоятельно.
<h:panelGrid>
в основном отображает HTML<table>
. Делать то же самое. - Создайте собственный модуль визуализации HTML, который поддерживает это. Однако это будет много пота и боли.
- Use a 3rd party component library which supports this.
- Tomahawk has a
<t:panelGroup>
component which supportscolspan
in<h:panelGrid>
. - RichFaces (только 3.x) имеет
<rich:column>
, который поддерживает какcolspan
, так иrowspan
в<rich:dataTable>
. - PrimeFaces имеет
<p:row>
рядом с<p:column>
, что поддерживается как в<p:panelGrid>
и<p:dataTable>
(также с<p:columnGroup>
).
- Tomahawk has a
С 24 января 2012 года Primefaces также имеет возможность использовать colspan и rowspan в компоненте panelGrid Primefaces. Видеть:
http://www.primefaces.org/showcase/ui/panel/panelGrid.xhtml
Использование: rich:column colspan="2"
в RichFaces
<rich:column colspan="2">
<h:outputText value="Ingrese el texto de la imagen" />
</rich:column>
Предполагать
- #P2# <блочная цитата> #P3# блочная цитата>
строка.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>
тогда, например
<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>
Печатает таблицу с 3 строками:
r1-c1, r1-c2 , r1-c3
3 пустые ячейки
выровненный по ячейке центр, имеющий colspan 3 и содержащий hello div.
Я согласен с ответом BalusC и хочу добавить, что библиотека компонентов Primefaces JSF2 также предлагает эту функциональность, если вы используете ее p:dataTable компонент. Там это называется группировка.
Невозможно определить диапазон столбцов в сетке панели, но при разумном использовании вы можете сделать это только с помощью простого тега. Один пример я хотел бы показать вам.
<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>
Please note that button5 spans two columns given the size it requires.