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
Wickens NestleAustraliaOnyama Limba UNQUALIFIED
Juan WieserJapanOnyama Limba UNQUALIFIED
Alejandro PerinCanadaElwin Sharvill NEGOTIATION
Jennifer AmigonFranceAnna Fali QUALIFIED
Emily WhobreyRussiaAnna Fali RENEWAL
Isabel BowleyUnited KingdomIvan Magalhaes QUALIFIED
Jeanfrancois VenereUnited KingdomAsiya Javayant RENEWAL
Faith GillianGermanyXuxue Feng QUALIFIED
Francesco ShinkoUnited KingdomElwin Sharvill QUALIFIED
Salvatore StockhamFranceIoni Bowcher UNQUALIFIED
Costa DilliardIndiaAsiya Javayant PROPOSAL
Aika InouyeIndiaAsiya Javayant PROPOSAL
Munro FerenczIndiaBernardo Dominic QUALIFIED
Ashley DoeUnited KingdomXuxue Feng NEW
Claire TollnerSpainIvan Magalhaes PROPOSAL
Smith GlickBrazilAmy Elsner RENEWAL
Mujtaba NickaJapanAmy Elsner PROPOSAL
Octavia MaletFranceOnyama Limba RENEWAL
Murillo MaletGermanyElwin Sharvill UNQUALIFIED
Sinclair WaycottSpainOnyama Limba NEW
Misaki RoysterArgentinaAsiya Javayant RENEWAL
Ricardo GauchoItalyElwin Sharvill NEGOTIATION
Maria MarrierIndiaAnna Fali UNQUALIFIED
Juan WieserRussiaAnna Fali NEGOTIATION
Alejandro PerinArgentinaStephen Shaw NEW
Julie StensethArgentinaOnyama Limba RENEWAL
Aika InouyeRussiaBernardo Dominic QUALIFIED
Arvin AlbaresRussiaIvan Magalhaes QUALIFIED
Claire TollnerCanadaOnyama Limba RENEWAL
Stacey MacleadAustraliaStephen Shaw QUALIFIED
Mayumi KolmetzItalyBernardo Dominic QUALIFIED
Kaitlin OstroskyCanadaAmy Elsner UNQUALIFIED
Aruna FigeroaSpainIvan Magalhaes NEW
Chavez BriddickIndiaAnna Fali PROPOSAL
Isabel BowleyBrazilXuxue Feng NEGOTIATION
Morrow RutaArgentinaBernardo Dominic NEGOTIATION
Claire TollnerGermanyIoni Bowcher NEW
Darci PoquetteIndiaXuxue Feng QUALIFIED
Maria MarrierJapanStephen Shaw NEW
Munro FerenczJapanAnna Fali PROPOSAL
Isabel BowleyAustraliaStephen Shaw QUALIFIED
Tony FollerGermanyOnyama Limba NEW
Smith GlickIndiaXuxue Feng UNQUALIFIED
Misaki RoysterFranceElwin Sharvill NEW
Clifford RimItalyAmy Elsner PROPOSAL
David DarakjySpainBernardo Dominic NEW
Maisha RulapaughArgentinaOnyama Limba RENEWAL
Salvatore StockhamFranceAnna Fali UNQUALIFIED
Deepesh ChuiJapanIoni Bowcher UNQUALIFIED
Antonio CaudyJapanIoni Bowcher UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Julie StensethRussiaAmy Elsner RENEWAL
Ashley DoeIndiaIoni Bowcher UNQUALIFIED
Tony FollerAustraliaAnna Fali QUALIFIED
Ashley DoeCanadaOnyama Limba NEGOTIATION
Jones VocelkaSpainAmy Elsner RENEWAL
David DarakjyGermanyAsiya Javayant QUALIFIED
Costa DilliardAustraliaXuxue Feng PROPOSAL
James ButtIndiaAnna Fali PROPOSAL
Sinclair WaycottGermanyIvan Magalhaes NEGOTIATION
Julie StensethAustraliaXuxue Feng QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Rodrigues CampainAustralia2026-06-16Chanay, Jeffrey A Esq UNQUALIFIED41Stephen Shaw
1001Murillo MaletFrance2026-06-16Feltz Printing Service NEW10Stephen Shaw
1002Rodrigues CampainArgentina2026-05-31Chapman, Ross E Esq PROPOSAL35Amy Elsner
1003Silvio SlusarskiGermany2026-06-16Buckley Miller Wright RENEWAL60Asiya Javayant
1004Mujtaba NickaJapan2026-06-07Benton, John B Jr PROPOSAL27Onyama Limba
1005Julie StensethItaly2026-06-03Rousseaux, Michael Esq NEGOTIATION56Amy Elsner
1006Smith GlickJapan2026-06-02Rangoni Of Florence NEGOTIATION38Asiya Javayant
1007Jennifer AmigonArgentina2026-05-24Chapman, Ross E Esq RENEWAL63Ivan Magalhaes
1008Arvin AlbaresGermany2026-05-23Truhlar And Truhlar Attys QUALIFIED14Xuxue Feng
1009Darci PoquetteItaly2026-06-05Buckley Miller Wright RENEWAL41Bernardo Dominic
1010Chavez BriddickArgentina2026-06-01Dorl, James J Esq NEW79Ioni Bowcher
1011Antonio CaudyFrance2026-06-06Commercial Press NEGOTIATION1Xuxue Feng
1012Antonio CaudyRussia2026-06-02Feltz Printing Service RENEWAL2Bernardo Dominic
1013Leja CaldareraRussia2026-06-18Chapman, Ross E Esq UNQUALIFIED45Amy Elsner
1014Adams MorascaRussia2026-06-17Chanay, Jeffrey A Esq QUALIFIED30Amy Elsner
1015Aruna FigeroaArgentina2026-06-20Feltz Printing Service NEGOTIATION26Anna Fali
1016Kaitlin OstroskyUnited Kingdom2026-06-18Rousseaux, Michael Esq PROPOSAL22Amy Elsner
1017Nicolas IturbideAustralia2026-05-27Chapman, Ross E Esq RENEWAL34Bernardo Dominic
1018Mayumi KolmetzFrance2026-06-12Printing Dimensions QUALIFIED6Xuxue Feng
1019Aika InouyeAustralia2026-06-10Buckley Miller Wright NEGOTIATION86Asiya Javayant
1020Mayumi KolmetzArgentina2026-06-06Commercial Press RENEWAL68Elwin Sharvill
1021Nicolas IturbideFrance2026-06-13Dorl, James J Esq RENEWAL7Bernardo Dominic
1022Ricardo GauchoIndia2026-05-29Morlong Associates PROPOSAL32Ivan Magalhaes
1023Clifford RimBrazil2026-06-15Feltz Printing Service RENEWAL32Ioni Bowcher
1024Jones VocelkaRussia2026-06-07Commercial Press UNQUALIFIED70Anna Fali
1025Izzy GarufiBrazil2026-06-05Printing Dimensions RENEWAL37Bernardo Dominic
1026Jones VocelkaRussia2026-06-11Chanay, Jeffrey A Esq RENEWAL40Elwin Sharvill
1027Maria MarrierItaly2026-05-28Truhlar And Truhlar Attys UNQUALIFIED25Xuxue Feng
1028Ricardo GauchoGermany2026-06-14Feiner Bros NEW35Stephen Shaw
1029Antonio CaudyIndia2026-05-23Buckley Miller Wright PROPOSAL59Elwin Sharvill
1030Munro FerenczAustralia2026-05-27Commercial Press QUALIFIED27Ioni Bowcher
1031Salvatore StockhamFrance2026-05-27Buckley Miller Wright RENEWAL88Bernardo Dominic
1032Smith GlickArgentina2026-05-30Chapman, Ross E Esq RENEWAL51Ivan Magalhaes
1033Costa DilliardItaly2026-06-04Printing Dimensions PROPOSAL92Ivan Magalhaes
1034Deepesh ChuiJapan2026-05-27Buckley Miller Wright PROPOSAL1Ioni Bowcher
1035Murillo MaletUnited Kingdom2026-05-27King, Christopher A Esq PROPOSAL54Anna Fali
1036Costa DilliardJapan2026-05-28Chanay, Jeffrey A Esq NEGOTIATION23Xuxue Feng
1037Jeanfrancois VenereCanada2026-06-04Buckley Miller Wright QUALIFIED99Elwin Sharvill
1038Ricardo GauchoIndia2026-06-08King, Christopher A Esq NEGOTIATION55Ioni Bowcher
1039Murillo MaletCanada2026-06-10Morlong Associates QUALIFIED44Xuxue Feng
1040Cody SaylorsCanada2026-05-25Commercial Press RENEWAL2Anna Fali
1041Faith GillianGermany2026-05-29Dorl, James J Esq NEGOTIATION67Elwin Sharvill
1042Costa DilliardAustralia2026-06-17Commercial Press RENEWAL47Asiya Javayant
1043Johnson SergiIndia2026-06-08Truhlar And Truhlar Attys QUALIFIED6Stephen Shaw
1044Murillo MaletBrazil2026-05-30Commercial Press PROPOSAL83Bernardo Dominic
1045Silvio SlusarskiSpain2026-06-04Buckley Miller Wright NEGOTIATION55Xuxue Feng
1046Aruna FigeroaCanada2026-06-10Chanay, Jeffrey A Esq RENEWAL14Ioni Bowcher
1047Alejandro PerinFrance2026-06-03Dorl, James J Esq QUALIFIED2Elwin Sharvill
1048Murillo MaletAustralia2026-05-30Truhlar And Truhlar Attys QUALIFIED21Elwin Sharvill
1049Ashley DoeArgentina2026-06-10Buckley Miller Wright PROPOSAL33Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Aditya KuskoRussiaAsiya Javayant RENEWAL
James ButtBrazilXuxue Feng QUALIFIED
Rodrigues CampainUnited KingdomElwin Sharvill PROPOSAL
Jones VocelkaSpainBernardo Dominic NEW
Ivar PaprockiBrazilBernardo Dominic QUALIFIED
Juan WieserCanadaStephen Shaw RENEWAL
Costa DilliardCanadaOnyama Limba RENEWAL
Jeanfrancois VenereUnited KingdomStephen Shaw PROPOSAL
Deepesh ChuiGermanyOnyama Limba QUALIFIED
Munro FerenczGermanyIvan Magalhaes UNQUALIFIED
Adams MorascaRussiaIvan Magalhaes RENEWAL
Maisha RulapaughAustraliaIoni Bowcher NEGOTIATION
Deepesh ChuiArgentinaAsiya Javayant NEGOTIATION
Cody SaylorsJapanIvan Magalhaes PROPOSAL
Izzy GarufiRussiaStephen Shaw PROPOSAL
Ivar PaprockiJapanAsiya Javayant NEGOTIATION
Maisha RulapaughCanadaIvan Magalhaes NEGOTIATION
Maria MarrierGermanyAnna Fali UNQUALIFIED
Jefferson SchemmerRussiaOnyama Limba RENEWAL
Aika InouyeCanadaIoni Bowcher UNQUALIFIED
Jefferson SchemmerBrazilStephen Shaw NEGOTIATION
Morrow RutaJapanBernardo Dominic PROPOSAL
Arvin AlbaresItalyAmy Elsner PROPOSAL
Greenwood BologniaIndiaXuxue Feng PROPOSAL
Leon OldroydAustraliaXuxue Feng NEGOTIATION
Aika InouyeIndiaIvan Magalhaes NEW
Nicolas IturbideBrazilIoni Bowcher UNQUALIFIED
Sinclair WaycottBrazilStephen Shaw QUALIFIED
Greenwood BologniaRussiaXuxue Feng UNQUALIFIED
Ivar PaprockiIndiaBernardo Dominic QUALIFIED
Maria MarrierItalyStephen Shaw QUALIFIED
Izzy GarufiJapanElwin Sharvill PROPOSAL
Cody SaylorsGermanyStephen Shaw NEGOTIATION
Aditya KuskoFranceOnyama Limba UNQUALIFIED
Arvin AlbaresFranceIoni Bowcher NEGOTIATION
Aika InouyeSpainXuxue Feng QUALIFIED
Jennifer AmigonIndiaElwin Sharvill NEW
Wickens NestleItalyIoni Bowcher QUALIFIED
Salvatore StockhamIndiaIvan Magalhaes RENEWAL
Ricardo GauchoGermanyAsiya Javayant PROPOSAL
Emily WhobreyIndiaIoni Bowcher NEGOTIATION
Julie StensethFranceAmy Elsner NEW
Alejandro PerinSpainIoni Bowcher NEGOTIATION
Maisha RulapaughAustraliaAnna Fali PROPOSAL
Faith GillianArgentinaBernardo Dominic NEGOTIATION
Leon OldroydCanadaIvan Magalhaes NEW
Jennifer AmigonAustraliaAnna Fali PROPOSAL
Morrow RutaArgentinaBernardo Dominic UNQUALIFIED
Deepesh ChuiAustraliaAsiya Javayant QUALIFIED
Arvin AlbaresFranceAnna Fali UNQUALIFIED
Frozen Columns
Name
Adams Morasca
Adams Morasca
Arvin Albares
Jones Vocelka
Aika Inouye
Kadeem Flosi
Kadeem Flosi
Misaki Royster
Adams Morasca
Silvio Slusarski
Smith Glick
Munro Ferencz
Murillo Malet
Nicolas Iturbide
Stacey Maclead
James Butt
Aruna Figeroa
Rodrigues Campain
Costa Dilliard
Claire Tollner
Smith Glick
Francesco Shinko
Jones Vocelka
Aditya Kusko
Faith Gillian
Murillo Malet
Alejandro Perin
Johnson Sergi
Jennifer Amigon
Misaki Royster
Antonio Caudy
Murillo Malet
Antonio Caudy
Ricardo Gaucho
Costa Dilliard
Costa Dilliard
Wickens Nestle
Greenwood Bolognia
Costa Dilliard
Kadeem Flosi
Clifford Rim
Chavez Briddick
Jeanfrancois Venere
Octavia Malet
Munro Ferencz
Aika Inouye
Mayumi Kolmetz
Johnson Sergi
Francesco Shinko
Sinclair Waycott
IdCountryDate
1000Germany2026-06-09
1001India2026-06-02
1002Russia2026-06-17
1003Canada2026-06-01
1004Australia2026-06-12
1005Germany2026-06-09
1006Brazil2026-06-07
1007France2026-05-30
1008Australia2026-06-03
1009Japan2026-05-30
1010Australia2026-06-05
1011Canada2026-06-07
1012Russia2026-06-17
1013Russia2026-06-17
1014Brazil2026-06-18
1015Brazil2026-06-05
1016Australia2026-06-20
1017Germany2026-06-13
1018Germany2026-06-03
1019India2026-06-10
1020Italy2026-06-12
1021India2026-05-23
1022Germany2026-06-16
1023Italy2026-05-25
1024Australia2026-06-19
1025United Kingdom2026-05-31
1026India2026-05-27
1027Canada2026-05-23
1028India2026-06-04
1029France2026-06-17
1030Russia2026-06-01
1031France2026-06-11
1032Spain2026-06-15
1033Canada2026-06-14
1034Germany2026-05-28
1035United Kingdom2026-06-08
1036France2026-06-08
1037Germany2026-06-19
1038Brazil2026-05-27
1039Brazil2026-06-16
1040Russia2026-06-05
1041Spain2026-06-14
1042Japan2026-06-13
1043Russia2026-05-30
1044Australia2026-06-14
1045Australia2026-06-08
1046Brazil2026-05-29
1047United Kingdom2026-06-11
1048Canada2026-05-30
1049Australia2026-05-24

On-Demand Data

NameIdCountryDate
Aika Inouye1000Italy2026-05-28
Deepesh Chui1001Russia2026-05-30
Alejandro Perin1002Australia2026-06-13
Leja Caldarera1003Japan2026-05-29
Mayumi Kolmetz1004Japan2026-05-25
Jeanfrancois Venere1005Italy2026-06-10
Jefferson Schemmer1006Argentina2026-05-29
Ricardo Gaucho1007United Kingdom2026-06-09
Ivar Paprocki1008United Kingdom2026-06-11
Jefferson Schemmer1009United Kingdom2026-06-12
Tony Foller1010Russia2026-06-09
Julie Stenseth1011Italy2026-06-15
Ashley Doe1012Russia2026-05-27
Aditya Kusko1013Japan2026-06-05
Leon Oldroyd1014Brazil2026-05-31
Jennifer Amigon1015Canada2026-06-10
Stacey Maclead1016United Kingdom2026-05-26
Jennifer Amigon1017Australia2026-06-15
David Darakjy1018France2026-06-19
Leja Caldarera1019Japan2026-05-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Wickens NestleRussiaBernardo Dominic NEGOTIATION
Greenwood BologniaBrazilAsiya Javayant NEGOTIATION
Smith GlickSpainElwin Sharvill NEW
Morrow RutaJapanAnna Fali UNQUALIFIED
Morrow RutaAustraliaIoni Bowcher PROPOSAL
Mayumi KolmetzJapanAnna Fali PROPOSAL
Deepesh ChuiIndiaElwin Sharvill NEGOTIATION
Ashley DoeArgentinaElwin Sharvill NEGOTIATION
Leja CaldareraRussiaIvan Magalhaes UNQUALIFIED
Greenwood BologniaIndiaAsiya Javayant RENEWAL
Maria MarrierBrazilAnna Fali NEGOTIATION
Alejandro PerinGermanyAsiya Javayant PROPOSAL
Cody SaylorsFranceIvan Magalhaes UNQUALIFIED
Jefferson SchemmerArgentinaOnyama Limba NEW
Leja CaldareraGermanyIvan Magalhaes UNQUALIFIED
Kadeem FlosiGermanyAmy Elsner PROPOSAL
Antonio CaudyItalyAmy Elsner NEGOTIATION
Ricardo GauchoSpainXuxue Feng QUALIFIED
Jeanfrancois VenereGermanyBernardo Dominic NEGOTIATION
Darci PoquetteRussiaXuxue Feng NEW
Kaitlin OstroskyArgentinaAsiya Javayant UNQUALIFIED
Sinclair WaycottBrazilXuxue Feng NEW
Cody SaylorsRussiaIoni Bowcher RENEWAL
Salvatore StockhamRussiaIoni Bowcher QUALIFIED
Munro FerenczJapanAmy Elsner NEGOTIATION
Faith GillianAustraliaAmy Elsner PROPOSAL
Johnson SergiGermanyStephen Shaw NEGOTIATION
Morrow RutaCanadaXuxue Feng NEW
Clifford RimArgentinaAsiya Javayant QUALIFIED
Munro FerenczBrazilOnyama Limba NEW
Jennifer AmigonItalyIoni Bowcher PROPOSAL
Julie StensethIndiaXuxue Feng RENEWAL
Aika InouyeGermanyAnna Fali NEW
Darci PoquetteIndiaAmy Elsner RENEWAL
Francesco ShinkoRussiaStephen Shaw PROPOSAL
Kadeem FlosiAustraliaStephen Shaw RENEWAL
Misaki RoysterCanadaIoni Bowcher UNQUALIFIED
Smith GlickJapanAnna Fali RENEWAL
Ashley DoeAustraliaOnyama Limba UNQUALIFIED
Aika InouyeJapanOnyama Limba UNQUALIFIED

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