Locale

Language
English
English
English
French
German
German
German
Italian
Korean
Spanish
Catalan
Dutch
Portuguese
Portuguese
Arabic
Arabic
Bulgarian
Bangla
Bosnian
Czech
Greek
Estonian
Persian
Finnish
Danish
Hindi
Indonesian
Icelandic
Croatian
Japanese
Hungarian
Hebrew
Georgian
Central Kurdish
Khmer
Kyrgyz
Kazakh
Lithuanian
Latvian
Malay
Norwegian
Polish
Romanian
Russian
Slovak
Slovenian
Serbian
Serbian
Swedish
Thai
Turkish
Ukrainian
Uzbek
Vietnamese
Chinese
Chinese

Input Style

Free Themes

Built-in component themes created by the PrimeFaces Theme Designer.

Saga Saga
Vela Vela
Arya Arya

Legacy Free Themes

Luna Amber Luna Amber
Luna Blue Luna Blue
Luna Green Luna Green
Luna Pink Luna Pink
Nova Nova
Nova Nova Alt
Nova Nova Accent

DataTable Scroll

Both vertical and horizontal scrolling of the data is supported with optional frozen rows-columns and on-demand loading features.

Vertical
NameCountryRepresentativeStatus
Aruna FigeroaRussiaIoni Bowcher UNQUALIFIED
Deepesh ChuiGermanyAmy Elsner PROPOSAL
Mayumi KolmetzUnited KingdomBernardo Dominic UNQUALIFIED
Sinclair WaycottUnited KingdomXuxue Feng NEW
Tony FollerIndiaIvan Magalhaes UNQUALIFIED
Salvatore StockhamSpainElwin Sharvill RENEWAL
Smith GlickRussiaBernardo Dominic PROPOSAL
Jennifer AmigonItalyStephen Shaw NEW
Aika InouyeArgentinaIoni Bowcher QUALIFIED
Arvin AlbaresJapanStephen Shaw NEW
Ricardo GauchoBrazilIvan Magalhaes UNQUALIFIED
Francesco ShinkoBrazilBernardo Dominic NEGOTIATION
Greenwood BologniaItalyBernardo Dominic PROPOSAL
Clifford RimUnited KingdomBernardo Dominic UNQUALIFIED
David DarakjySpainStephen Shaw UNQUALIFIED
Darci PoquetteJapanIoni Bowcher QUALIFIED
Salvatore StockhamFranceAsiya Javayant NEGOTIATION
Aditya KuskoItalyBernardo Dominic QUALIFIED
Aruna FigeroaCanadaAmy Elsner RENEWAL
Leja CaldareraJapanOnyama Limba UNQUALIFIED
Costa DilliardItalyIoni Bowcher RENEWAL
Darci PoquetteIndiaElwin Sharvill PROPOSAL
Kadeem FlosiUnited KingdomAmy Elsner NEGOTIATION
Ivar PaprockiUnited KingdomElwin Sharvill UNQUALIFIED
Darci PoquetteItalyAsiya Javayant NEW
Sinclair WaycottCanadaOnyama Limba PROPOSAL
Antonio CaudyGermanyXuxue Feng QUALIFIED
Jefferson SchemmerCanadaAmy Elsner NEGOTIATION
Maria MarrierItalyXuxue Feng PROPOSAL
Francesco ShinkoCanadaAsiya Javayant RENEWAL
Claire TollnerBrazilIvan Magalhaes NEGOTIATION
Faith GillianRussiaAnna Fali PROPOSAL
Costa DilliardRussiaElwin Sharvill RENEWAL
Maria MarrierAustraliaAmy Elsner NEGOTIATION
Izzy GarufiGermanyIvan Magalhaes RENEWAL
Jennifer AmigonSpainBernardo Dominic NEW
Ivar PaprockiIndiaAnna Fali QUALIFIED
Isabel BowleyFranceAnna Fali NEW
Mayumi KolmetzBrazilElwin Sharvill NEW
Tony FollerFranceOnyama Limba QUALIFIED
Claire TollnerItalyIvan Magalhaes UNQUALIFIED
Faith GillianItalyAnna Fali RENEWAL
Faith GillianArgentinaBernardo Dominic NEW
David DarakjyCanadaIvan Magalhaes NEGOTIATION
Smith GlickUnited KingdomAmy Elsner NEW
Chavez BriddickItalyOnyama Limba PROPOSAL
Izzy GarufiArgentinaBernardo Dominic RENEWAL
Silvio SlusarskiIndiaAnna Fali UNQUALIFIED
Jones VocelkaArgentinaXuxue Feng NEGOTIATION
Nicolas IturbideJapanAmy Elsner NEW
Horizontal
NameCountryRepresentativeStatus
Salvatore StockhamUnited KingdomIvan Magalhaes NEGOTIATION
Emily WhobreySpainAsiya Javayant PROPOSAL
Costa DilliardFranceAsiya Javayant PROPOSAL
Johnson SergiIndiaStephen Shaw UNQUALIFIED
Mayumi KolmetzIndiaIoni Bowcher QUALIFIED
Octavia MaletFranceAnna Fali UNQUALIFIED
Leja CaldareraIndiaStephen Shaw QUALIFIED
Izzy GarufiUnited KingdomStephen Shaw QUALIFIED
Cody SaylorsSpainBernardo Dominic RENEWAL
Octavia MaletUnited KingdomAsiya Javayant UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maria MarrierFrance2026-06-15Dorl, James J Esq UNQUALIFIED57Asiya Javayant
1001Nicolas IturbideSpain2026-05-31Rousseaux, Michael Esq RENEWAL24Ivan Magalhaes
1002Wickens NestleAustralia2026-06-07Dorl, James J Esq UNQUALIFIED17Onyama Limba
1003Octavia MaletUnited Kingdom2026-06-18Printing Dimensions NEGOTIATION99Bernardo Dominic
1004Mujtaba NickaIndia2026-05-29King, Christopher A Esq NEGOTIATION17Xuxue Feng
1005Adams MorascaFrance2026-05-25Buckley Miller Wright UNQUALIFIED9Onyama Limba
1006Nicolas IturbideRussia2026-06-02Chapman, Ross E Esq PROPOSAL11Onyama Limba
1007Jeanfrancois VenereFrance2026-05-25Chapman, Ross E Esq UNQUALIFIED18Ivan Magalhaes
1008Murillo MaletFrance2026-06-20Truhlar And Truhlar Attys RENEWAL77Anna Fali
1009Faith GillianFrance2026-06-10Feiner Bros UNQUALIFIED99Anna Fali
1010Ashley DoeSpain2026-06-17Benton, John B Jr NEW94Xuxue Feng
1011Kadeem FlosiGermany2026-06-15Dorl, James J Esq QUALIFIED89Xuxue Feng
1012Morrow RutaUnited Kingdom2026-05-24Buckley Miller Wright NEW74Amy Elsner
1013Johnson SergiArgentina2026-06-21Chapman, Ross E Esq QUALIFIED7Bernardo Dominic
1014Antonio CaudyGermany2026-06-21Rangoni Of Florence UNQUALIFIED13Ivan Magalhaes
1015Octavia MaletIndia2026-06-01Chemel, James L Cpa RENEWAL28Onyama Limba
1016Francesco ShinkoBrazil2026-06-20Buckley Miller Wright QUALIFIED65Bernardo Dominic
1017Izzy GarufiArgentina2026-05-24Morlong Associates RENEWAL19Elwin Sharvill
1018Izzy GarufiItaly2026-06-14Benton, John B Jr RENEWAL89Bernardo Dominic
1019Silvio SlusarskiRussia2026-06-03Chapman, Ross E Esq RENEWAL46Anna Fali
1020Emily WhobreySpain2026-06-06Feltz Printing Service NEGOTIATION70Elwin Sharvill
1021Deepesh ChuiItaly2026-06-01Truhlar And Truhlar Attys UNQUALIFIED71Bernardo Dominic
1022Misaki RoysterUnited Kingdom2026-05-29Feltz Printing Service UNQUALIFIED8Anna Fali
1023Kadeem FlosiArgentina2026-05-24Printing Dimensions UNQUALIFIED15Bernardo Dominic
1024Maisha RulapaughItaly2026-06-03Chapman, Ross E Esq RENEWAL49Xuxue Feng
1025Claire TollnerGermany2026-05-30Buckley Miller Wright NEGOTIATION72Asiya Javayant
1026Kaitlin OstroskyUnited Kingdom2026-05-23Morlong Associates UNQUALIFIED15Anna Fali
1027Munro FerenczCanada2026-05-23Chapman, Ross E Esq PROPOSAL59Asiya Javayant
1028Faith GillianArgentina2026-06-01Feiner Bros NEGOTIATION9Amy Elsner
1029Stacey MacleadAustralia2026-06-20Dorl, James J Esq UNQUALIFIED1Bernardo Dominic
1030Kaitlin OstroskyArgentina2026-05-30Feltz Printing Service RENEWAL90Asiya Javayant
1031Costa DilliardFrance2026-06-18Printing Dimensions NEGOTIATION61Stephen Shaw
1032Antonio CaudyGermany2026-06-02Rangoni Of Florence UNQUALIFIED29Xuxue Feng
1033Aika InouyeItaly2026-06-03Truhlar And Truhlar Attys NEGOTIATION82Xuxue Feng
1034Murillo MaletItaly2026-05-27Printing Dimensions NEGOTIATION0Ioni Bowcher
1035Wickens NestleRussia2026-06-19Commercial Press QUALIFIED42Xuxue Feng
1036Morrow RutaArgentina2026-05-31Feiner Bros NEW15Anna Fali
1037Emily WhobreyCanada2026-06-09Commercial Press UNQUALIFIED40Amy Elsner
1038Izzy GarufiBrazil2026-06-20Commercial Press QUALIFIED93Elwin Sharvill
1039Misaki RoysterAustralia2026-06-18Feiner Bros UNQUALIFIED84Ivan Magalhaes
1040Aika InouyeAustralia2026-06-01Feiner Bros RENEWAL84Bernardo Dominic
1041Clifford RimCanada2026-06-12Feltz Printing Service UNQUALIFIED44Xuxue Feng
1042Stacey MacleadRussia2026-06-20Buckley Miller Wright NEGOTIATION29Bernardo Dominic
1043Isabel BowleyBrazil2026-06-12Printing Dimensions PROPOSAL44Anna Fali
1044Tony FollerBrazil2026-06-07Chanay, Jeffrey A Esq NEW87Asiya Javayant
1045Smith GlickItaly2026-06-17Rangoni Of Florence PROPOSAL34Asiya Javayant
1046Darci PoquetteBrazil2026-05-24Commercial Press QUALIFIED87Bernardo Dominic
1047Juan WieserItaly2026-06-21Chemel, James L Cpa QUALIFIED29Elwin Sharvill
1048Ivar PaprockiFrance2026-06-02Printing Dimensions RENEWAL15Asiya Javayant
1049Johnson SergiRussia2026-05-31Rousseaux, Michael Esq NEGOTIATION44Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Aditya KuskoRussiaOnyama Limba RENEWAL
Jones VocelkaUnited KingdomOnyama Limba UNQUALIFIED
Mayumi KolmetzSpainIvan Magalhaes QUALIFIED
Jeanfrancois VenereJapanIvan Magalhaes NEGOTIATION
David DarakjyBrazilAsiya Javayant PROPOSAL
James ButtArgentinaAsiya Javayant QUALIFIED
Darci PoquetteRussiaIoni Bowcher UNQUALIFIED
Deepesh ChuiAustraliaIoni Bowcher NEGOTIATION
Kaitlin OstroskyItalyAnna Fali UNQUALIFIED
Antonio CaudyRussiaElwin Sharvill UNQUALIFIED
Rodrigues CampainIndiaElwin Sharvill QUALIFIED
Silvio SlusarskiIndiaElwin Sharvill QUALIFIED
Darci PoquetteFranceAnna Fali RENEWAL
Antonio CaudyIndiaStephen Shaw QUALIFIED
Isabel BowleyCanadaAmy Elsner QUALIFIED
Kaitlin OstroskyAustraliaIvan Magalhaes RENEWAL
Izzy GarufiAustraliaElwin Sharvill RENEWAL
Mayumi KolmetzCanadaBernardo Dominic QUALIFIED
Julie StensethSpainAmy Elsner NEW
Misaki RoysterJapanElwin Sharvill RENEWAL
Jeanfrancois VenereFranceXuxue Feng UNQUALIFIED
Chavez BriddickItalyAnna Fali UNQUALIFIED
Arvin AlbaresIndiaIoni Bowcher UNQUALIFIED
Alejandro PerinFranceElwin Sharvill QUALIFIED
Kadeem FlosiSpainAsiya Javayant RENEWAL
Darci PoquetteArgentinaBernardo Dominic NEW
Octavia MaletJapanBernardo Dominic NEGOTIATION
Alejandro PerinRussiaOnyama Limba NEW
David DarakjyItalyOnyama Limba NEW
Misaki RoysterIndiaIoni Bowcher PROPOSAL
Octavia MaletJapanBernardo Dominic PROPOSAL
Alejandro PerinAustraliaAnna Fali NEW
Nicolas IturbideArgentinaAnna Fali NEW
Francesco ShinkoCanadaAnna Fali NEGOTIATION
Kadeem FlosiSpainOnyama Limba RENEWAL
Chavez BriddickIndiaStephen Shaw PROPOSAL
Faith GillianArgentinaAnna Fali UNQUALIFIED
Juan WieserRussiaStephen Shaw UNQUALIFIED
Chavez BriddickJapanOnyama Limba PROPOSAL
Maria MarrierRussiaAnna Fali PROPOSAL
Darci PoquetteSpainXuxue Feng PROPOSAL
Mujtaba NickaItalyIvan Magalhaes RENEWAL
Alejandro PerinAustraliaAmy Elsner UNQUALIFIED
Munro FerenczSpainAnna Fali NEGOTIATION
Adams MorascaJapanIoni Bowcher NEGOTIATION
Deepesh ChuiCanadaAmy Elsner PROPOSAL
Francesco ShinkoUnited KingdomAmy Elsner PROPOSAL
Chavez BriddickJapanBernardo Dominic PROPOSAL
Alejandro PerinCanadaBernardo Dominic PROPOSAL
Arvin AlbaresUnited KingdomBernardo Dominic PROPOSAL
Frozen Columns
Name
Tony Foller
Murillo Malet
Salvatore Stockham
Clifford Rim
Faith Gillian
Izzy Garufi
Morrow Ruta
Smith Glick
Costa Dilliard
Jennifer Amigon
Leja Caldarera
Darci Poquette
Wickens Nestle
Tony Foller
Sinclair Waycott
Deepesh Chui
Darci Poquette
Juan Wieser
Antonio Caudy
Jefferson Schemmer
Greenwood Bolognia
James Butt
Juan Wieser
Ashley Doe
Costa Dilliard
Faith Gillian
Alejandro Perin
Munro Ferencz
Claire Tollner
Silvio Slusarski
Deepesh Chui
Greenwood Bolognia
Alejandro Perin
Jeanfrancois Venere
Claire Tollner
Jennifer Amigon
Isabel Bowley
Leon Oldroyd
Morrow Ruta
Misaki Royster
Darci Poquette
Morrow Ruta
Mujtaba Nicka
Silvio Slusarski
Misaki Royster
Mayumi Kolmetz
Leja Caldarera
Sinclair Waycott
Maria Marrier
Wickens Nestle
IdCountryDate
1000Japan2026-05-31
1001Australia2026-05-23
1002Brazil2026-06-21
1003France2026-05-28
1004Germany2026-06-14
1005Brazil2026-06-03
1006France2026-05-26
1007Germany2026-06-12
1008Argentina2026-05-23
1009Japan2026-05-29
1010Russia2026-06-07
1011Germany2026-06-10
1012Russia2026-06-15
1013Japan2026-06-11
1014United Kingdom2026-05-29
1015Spain2026-06-02
1016Japan2026-06-12
1017Italy2026-06-16
1018United Kingdom2026-06-13
1019Argentina2026-05-25
1020United Kingdom2026-06-20
1021Canada2026-06-12
1022Italy2026-06-18
1023Brazil2026-05-29
1024Canada2026-06-05
1025Russia2026-06-13
1026France2026-05-29
1027Argentina2026-06-09
1028France2026-06-18
1029Russia2026-06-09
1030Russia2026-05-28
1031Russia2026-06-10
1032United Kingdom2026-05-28
1033Argentina2026-06-01
1034Spain2026-06-01
1035Italy2026-05-25
1036Japan2026-06-06
1037Spain2026-06-17
1038India2026-05-29
1039Canada2026-06-19
1040Canada2026-05-30
1041Italy2026-05-27
1042Brazil2026-05-28
1043Spain2026-06-12
1044United Kingdom2026-05-31
1045Argentina2026-06-18
1046Italy2026-06-01
1047India2026-05-23
1048Australia2026-06-01
1049France2026-06-16

On-Demand Data

NameIdCountryDate
Leon Oldroyd1000Italy2026-05-27
Greenwood Bolognia1001Italy2026-06-20
Leon Oldroyd1002Russia2026-06-05
Leon Oldroyd1003Spain2026-06-05
Cody Saylors1004United Kingdom2026-05-27
Kadeem Flosi1005United Kingdom2026-06-04
Murillo Malet1006Italy2026-05-29
Nicolas Iturbide1007Brazil2026-05-30
Claire Tollner1008Russia2026-06-15
Leja Caldarera1009Germany2026-06-20
Jeanfrancois Venere1010Japan2026-05-30
Ricardo Gaucho1011Australia2026-06-01
Maria Marrier1012France2026-06-15
Munro Ferencz1013Italy2026-06-12
Johnson Sergi1014United Kingdom2026-06-04
Jefferson Schemmer1015India2026-06-15
Silvio Slusarski1016Australia2026-06-13
Rodrigues Campain1017Argentina2026-06-11
Salvatore Stockham1018Spain2026-05-27
Sinclair Waycott1019Australia2026-06-01
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Darci PoquetteRussiaStephen Shaw RENEWAL
Leon OldroydJapanIvan Magalhaes NEW
Jones VocelkaItalyAsiya Javayant NEGOTIATION
Jennifer AmigonCanadaStephen Shaw QUALIFIED
Arvin AlbaresFranceIvan Magalhaes QUALIFIED
Leon OldroydFranceXuxue Feng UNQUALIFIED
Julie StensethArgentinaOnyama Limba UNQUALIFIED
Francesco ShinkoBrazilAnna Fali NEGOTIATION
Chavez BriddickFranceOnyama Limba RENEWAL
Misaki RoysterUnited KingdomIvan Magalhaes NEW
Rodrigues CampainArgentinaAmy Elsner NEGOTIATION
Sinclair WaycottGermanyElwin Sharvill NEGOTIATION
Deepesh ChuiJapanAnna Fali UNQUALIFIED
Johnson SergiArgentinaXuxue Feng PROPOSAL
Stacey MacleadFranceXuxue Feng NEW
Ivar PaprockiRussiaAmy Elsner RENEWAL
Misaki RoysterIndiaAnna Fali RENEWAL
Mujtaba NickaJapanElwin Sharvill NEW
Misaki RoysterRussiaIvan Magalhaes QUALIFIED
Costa DilliardCanadaAsiya Javayant NEGOTIATION
Stacey MacleadArgentinaIoni Bowcher QUALIFIED
Clifford RimAustraliaAmy Elsner PROPOSAL
Ashley DoeBrazilOnyama Limba NEGOTIATION
Morrow RutaIndiaIoni Bowcher PROPOSAL
Ivar PaprockiRussiaOnyama Limba NEW
Misaki RoysterGermanyAmy Elsner PROPOSAL
Chavez BriddickSpainOnyama Limba NEGOTIATION
Maisha RulapaughItalyOnyama Limba NEW
Claire TollnerCanadaBernardo Dominic QUALIFIED
Rodrigues CampainIndiaBernardo Dominic PROPOSAL
Murillo MaletItalyBernardo Dominic NEGOTIATION
Aruna FigeroaBrazilOnyama Limba QUALIFIED
Adams MorascaCanadaXuxue Feng PROPOSAL
Mayumi KolmetzBrazilAnna Fali NEW
Stacey MacleadArgentinaIoni Bowcher RENEWAL
Maisha RulapaughUnited KingdomAmy Elsner NEW
Kaitlin OstroskyAustraliaAmy Elsner RENEWAL
Emily WhobreyAustraliaXuxue Feng NEW
Maisha RulapaughFranceAnna Fali NEGOTIATION
Munro FerenczBrazilBernardo Dominic QUALIFIED

<style>
    .ui-datatable-frozenlayout-left {
        width: 20%;
    }

    .ui-datatable-frozenlayout-right {
        width: 80%;
    }
</style>


<h:form>
    <div class="card">
        <h5 style="margin-top:0">Vertical</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers1}" scrollable="true" scrollHeight="250">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Horizontal</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers2}" scrollable="true" scrollWidth="600">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Horizontal and Vertical</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers3}" scrollable="true" scrollWidth="50%" scrollHeight="250">
            <p:column headerText="Id" footerText="Id">
                <h:outputText value="#{customer.id}"/>
            </p:column>
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Date" footerText="Date">
                <h:outputText value="#{customer.date}"/>
            </p:column>
            <p:column headerText="Company" footerText="Company">
                <h:outputText value="#{customer.company}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
            <p:column headerText="Activity" footerText="Activity">
                <h:outputText value="#{customer.activity}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Frozen Rows</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers4}" scrollable="true" scrollHeight="250"
                     frozenRows="2">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Frozen Columns</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers5}" scrollable="true" scrollHeight="250"
                     scrollWidth="300" frozenColumns="1">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Id" footerText="Id">
                <h:outputText value="#{customer.id}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Date" footerText="Date">
                <h:outputText value="#{customer.date}"/>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h3>On-Demand Data</h3>
        <p:dataTable var="customer" value="#{dtScrollView.customers6}" scrollRows="20" scrollable="true" liveScroll="true" scrollHeight="150">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Id" footerText="Id">
                <h:outputText value="#{customer.id}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Date" footerText="Date">
                <h:outputText value="#{customer.date}"/>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Virtual Scrolling - 20000 Rows</h5>
        <p:dataTable var="customer" value="#{dtScrollView.lazyModel}" scrollRows="20" scrollable="true"
                     virtualScroll="true" scrollHeight="200" rows="40" style="margin-bottom:0">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

</h:form>