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
Darci PoquetteJapanIoni Bowcher NEGOTIATION
Ricardo GauchoCanadaIvan Magalhaes NEW
Cody SaylorsFranceXuxue Feng UNQUALIFIED
Mayumi KolmetzSpainAsiya Javayant NEW
Stacey MacleadFranceAsiya Javayant RENEWAL
David DarakjyRussiaIvan Magalhaes NEW
Maria MarrierRussiaAnna Fali PROPOSAL
Aika InouyeItalyAmy Elsner NEGOTIATION
Maisha RulapaughAustraliaStephen Shaw NEW
Aditya KuskoAustraliaStephen Shaw QUALIFIED
Jefferson SchemmerUnited KingdomAnna Fali RENEWAL
Mayumi KolmetzFranceAsiya Javayant PROPOSAL
Emily WhobreyJapanXuxue Feng NEGOTIATION
Deepesh ChuiBrazilIoni Bowcher NEGOTIATION
Silvio SlusarskiBrazilBernardo Dominic QUALIFIED
Deepesh ChuiUnited KingdomBernardo Dominic RENEWAL
Julie StensethIndiaXuxue Feng NEW
Ashley DoeIndiaAsiya Javayant PROPOSAL
Cody SaylorsArgentinaElwin Sharvill RENEWAL
Stacey MacleadGermanyIvan Magalhaes NEW
Nicolas IturbideRussiaXuxue Feng QUALIFIED
Kadeem FlosiBrazilIoni Bowcher PROPOSAL
Smith GlickArgentinaAnna Fali NEW
Cody SaylorsSpainStephen Shaw UNQUALIFIED
Smith GlickUnited KingdomStephen Shaw NEGOTIATION
Deepesh ChuiArgentinaStephen Shaw NEGOTIATION
Isabel BowleySpainStephen Shaw RENEWAL
Isabel BowleyArgentinaXuxue Feng NEGOTIATION
Antonio CaudyFranceAnna Fali RENEWAL
Munro FerenczIndiaOnyama Limba RENEWAL
Wickens NestleBrazilAmy Elsner RENEWAL
Cody SaylorsRussiaAsiya Javayant NEGOTIATION
Aruna FigeroaRussiaXuxue Feng NEGOTIATION
Claire TollnerBrazilElwin Sharvill UNQUALIFIED
Darci PoquetteSpainStephen Shaw NEW
Ivar PaprockiBrazilElwin Sharvill QUALIFIED
Clifford RimSpainXuxue Feng UNQUALIFIED
Ivar PaprockiIndiaAmy Elsner NEGOTIATION
Salvatore StockhamItalyAsiya Javayant NEW
Jennifer AmigonAustraliaAmy Elsner PROPOSAL
Leon OldroydRussiaIoni Bowcher QUALIFIED
Aika InouyeSpainOnyama Limba NEW
Faith GillianRussiaXuxue Feng QUALIFIED
Juan WieserGermanyElwin Sharvill PROPOSAL
Jeanfrancois VenereUnited KingdomIvan Magalhaes PROPOSAL
Ivar PaprockiUnited KingdomOnyama Limba QUALIFIED
Isabel BowleyUnited KingdomBernardo Dominic UNQUALIFIED
Mayumi KolmetzUnited KingdomIoni Bowcher NEGOTIATION
Juan WieserUnited KingdomXuxue Feng NEW
Darci PoquetteGermanyIvan Magalhaes PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Mayumi KolmetzIndiaXuxue Feng NEW
Johnson SergiIndiaAnna Fali UNQUALIFIED
Murillo MaletRussiaIoni Bowcher UNQUALIFIED
Ashley DoeFranceIvan Magalhaes UNQUALIFIED
Silvio SlusarskiCanadaAmy Elsner PROPOSAL
Chavez BriddickUnited KingdomIoni Bowcher UNQUALIFIED
Darci PoquetteGermanyBernardo Dominic PROPOSAL
Leon OldroydAustraliaAsiya Javayant UNQUALIFIED
Munro FerenczBrazilIvan Magalhaes RENEWAL
Leja CaldareraGermanyOnyama Limba UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Silvio SlusarskiFrance2026-05-24Commercial Press UNQUALIFIED26Bernardo Dominic
1001Leon OldroydIndia2026-06-04Feltz Printing Service UNQUALIFIED79Xuxue Feng
1002Deepesh ChuiArgentina2026-05-22Chapman, Ross E Esq NEW99Stephen Shaw
1003Maria MarrierUnited Kingdom2026-05-23Chapman, Ross E Esq QUALIFIED60Ivan Magalhaes
1004Ivar PaprockiUnited Kingdom2026-05-30Chapman, Ross E Esq UNQUALIFIED21Amy Elsner
1005Tony FollerRussia2026-05-08Feltz Printing Service QUALIFIED79Elwin Sharvill
1006Wickens NestleArgentina2026-06-01Chanay, Jeffrey A Esq UNQUALIFIED99Stephen Shaw
1007Octavia MaletBrazil2026-06-01Dorl, James J Esq NEGOTIATION59Ioni Bowcher
1008Nicolas IturbideRussia2026-05-07Chapman, Ross E Esq PROPOSAL29Bernardo Dominic
1009Deepesh ChuiAustralia2026-05-16Benton, John B Jr NEW13Bernardo Dominic
1010Izzy GarufiJapan2026-05-24Commercial Press NEW34Elwin Sharvill
1011Clifford RimBrazil2026-05-19Commercial Press QUALIFIED81Asiya Javayant
1012Murillo MaletCanada2026-06-02Printing Dimensions NEW6Xuxue Feng
1013Alejandro PerinAustralia2026-05-20Rangoni Of Florence UNQUALIFIED68Bernardo Dominic
1014Rodrigues CampainJapan2026-05-14Chapman, Ross E Esq QUALIFIED70Onyama Limba
1015Chavez BriddickItaly2026-05-14Benton, John B Jr PROPOSAL88Asiya Javayant
1016Isabel BowleyAustralia2026-05-21Printing Dimensions NEGOTIATION30Onyama Limba
1017Chavez BriddickCanada2026-05-21Feltz Printing Service NEW87Amy Elsner
1018Juan WieserAustralia2026-05-18Chanay, Jeffrey A Esq QUALIFIED40Stephen Shaw
1019Kaitlin OstroskyCanada2026-05-24Benton, John B Jr NEGOTIATION76Onyama Limba
1020Rodrigues CampainUnited Kingdom2026-05-15Commercial Press NEGOTIATION98Ivan Magalhaes
1021Munro FerenczSpain2026-05-31Chapman, Ross E Esq NEW35Bernardo Dominic
1022Maisha RulapaughAustralia2026-06-05Chapman, Ross E Esq NEW23Bernardo Dominic
1023Ivar PaprockiArgentina2026-06-04Commercial Press NEGOTIATION18Elwin Sharvill
1024James ButtUnited Kingdom2026-05-21Chemel, James L Cpa NEW88Xuxue Feng
1025Kadeem FlosiItaly2026-05-31King, Christopher A Esq RENEWAL71Xuxue Feng
1026Murillo MaletAustralia2026-06-04Commercial Press UNQUALIFIED58Stephen Shaw
1027Ivar PaprockiIndia2026-05-09Truhlar And Truhlar Attys NEGOTIATION6Amy Elsner
1028Faith GillianGermany2026-05-11Feiner Bros PROPOSAL85Elwin Sharvill
1029Emily WhobreyIndia2026-05-27Commercial Press QUALIFIED17Asiya Javayant
1030Darci PoquetteGermany2026-05-16Buckley Miller Wright PROPOSAL73Elwin Sharvill
1031Ivar PaprockiArgentina2026-05-22Rousseaux, Michael Esq UNQUALIFIED83Bernardo Dominic
1032Juan WieserFrance2026-05-13Chapman, Ross E Esq NEGOTIATION80Onyama Limba
1033James ButtIndia2026-05-10Chapman, Ross E Esq PROPOSAL68Onyama Limba
1034Alejandro PerinRussia2026-05-17Rangoni Of Florence PROPOSAL2Bernardo Dominic
1035Julie StensethGermany2026-05-30Dorl, James J Esq NEW76Asiya Javayant
1036Jones VocelkaGermany2026-05-30Truhlar And Truhlar Attys PROPOSAL4Bernardo Dominic
1037Maisha RulapaughArgentina2026-05-13King, Christopher A Esq QUALIFIED9Amy Elsner
1038Aruna FigeroaFrance2026-05-09Benton, John B Jr QUALIFIED24Asiya Javayant
1039Isabel BowleyJapan2026-05-24Benton, John B Jr UNQUALIFIED3Onyama Limba
1040James ButtSpain2026-05-14Buckley Miller Wright NEW14Amy Elsner
1041Kaitlin OstroskyFrance2026-06-03Chemel, James L Cpa UNQUALIFIED20Stephen Shaw
1042Jennifer AmigonRussia2026-06-01Rangoni Of Florence NEW73Onyama Limba
1043Rodrigues CampainRussia2026-05-19Buckley Miller Wright QUALIFIED9Amy Elsner
1044Costa DilliardAustralia2026-05-22Chanay, Jeffrey A Esq RENEWAL34Anna Fali
1045Aditya KuskoSpain2026-05-23Chemel, James L Cpa RENEWAL59Asiya Javayant
1046Murillo MaletIndia2026-05-26Morlong Associates NEW81Onyama Limba
1047Antonio CaudyRussia2026-05-25Printing Dimensions NEGOTIATION38Ioni Bowcher
1048Costa DilliardGermany2026-06-04Dorl, James J Esq NEGOTIATION38Stephen Shaw
1049Chavez BriddickSpain2026-05-17Chemel, James L Cpa PROPOSAL32Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Rodrigues CampainJapanAmy Elsner NEGOTIATION
Clifford RimBrazilOnyama Limba NEGOTIATION
Jones VocelkaArgentinaAmy Elsner NEW
Jeanfrancois VenereRussiaXuxue Feng NEGOTIATION
Morrow RutaRussiaElwin Sharvill UNQUALIFIED
Tony FollerGermanyAsiya Javayant PROPOSAL
Nicolas IturbideFranceStephen Shaw PROPOSAL
Silvio SlusarskiArgentinaXuxue Feng QUALIFIED
Nicolas IturbideJapanIoni Bowcher QUALIFIED
Darci PoquetteFranceBernardo Dominic NEW
Aika InouyeAustraliaStephen Shaw PROPOSAL
Clifford RimItalyXuxue Feng PROPOSAL
Izzy GarufiBrazilStephen Shaw NEGOTIATION
Wickens NestleItalyXuxue Feng UNQUALIFIED
Jefferson SchemmerBrazilXuxue Feng PROPOSAL
Smith GlickCanadaElwin Sharvill UNQUALIFIED
Aruna FigeroaArgentinaStephen Shaw QUALIFIED
Antonio CaudyIndiaXuxue Feng NEGOTIATION
Rodrigues CampainBrazilIvan Magalhaes RENEWAL
Francesco ShinkoFranceIoni Bowcher QUALIFIED
Aditya KuskoUnited KingdomElwin Sharvill NEGOTIATION
Maria MarrierBrazilElwin Sharvill QUALIFIED
James ButtUnited KingdomAnna Fali NEW
Izzy GarufiBrazilElwin Sharvill UNQUALIFIED
Greenwood BologniaRussiaElwin Sharvill NEGOTIATION
Emily WhobreyJapanXuxue Feng RENEWAL
Kadeem FlosiBrazilAsiya Javayant QUALIFIED
Arvin AlbaresRussiaIvan Magalhaes QUALIFIED
Stacey MacleadSpainIoni Bowcher UNQUALIFIED
Faith GillianAustraliaXuxue Feng NEGOTIATION
James ButtBrazilXuxue Feng NEW
Arvin AlbaresAustraliaIvan Magalhaes PROPOSAL
Ivar PaprockiUnited KingdomXuxue Feng QUALIFIED
Ivar PaprockiSpainAnna Fali NEGOTIATION
Maria MarrierRussiaXuxue Feng RENEWAL
Silvio SlusarskiAustraliaStephen Shaw QUALIFIED
Jennifer AmigonItalyBernardo Dominic QUALIFIED
Darci PoquetteBrazilBernardo Dominic NEGOTIATION
Greenwood BologniaItalyIoni Bowcher RENEWAL
Mayumi KolmetzUnited KingdomAsiya Javayant QUALIFIED
Mayumi KolmetzArgentinaBernardo Dominic NEGOTIATION
Darci PoquetteGermanyAmy Elsner UNQUALIFIED
Ashley DoeFranceAnna Fali UNQUALIFIED
Rodrigues CampainJapanElwin Sharvill UNQUALIFIED
Nicolas IturbideSpainElwin Sharvill RENEWAL
Isabel BowleyAustraliaOnyama Limba PROPOSAL
Maisha RulapaughJapanAnna Fali NEGOTIATION
Arvin AlbaresSpainXuxue Feng PROPOSAL
Silvio SlusarskiSpainXuxue Feng PROPOSAL
Cody SaylorsIndiaAnna Fali QUALIFIED
Frozen Columns
Name
Cody Saylors
Ricardo Gaucho
Jennifer Amigon
Aditya Kusko
Munro Ferencz
Jeanfrancois Venere
Sinclair Waycott
Jones Vocelka
Octavia Malet
Rodrigues Campain
David Darakjy
Wickens Nestle
Silvio Slusarski
Sinclair Waycott
Antonio Caudy
Isabel Bowley
Adams Morasca
Chavez Briddick
James Butt
Clifford Rim
Chavez Briddick
Isabel Bowley
Alejandro Perin
Costa Dilliard
Francesco Shinko
Isabel Bowley
Ashley Doe
Jeanfrancois Venere
Tony Foller
David Darakjy
Ivar Paprocki
Emily Whobrey
Jones Vocelka
Jefferson Schemmer
Sinclair Waycott
Costa Dilliard
Julie Stenseth
Izzy Garufi
Maria Marrier
Leon Oldroyd
Aditya Kusko
Jefferson Schemmer
Faith Gillian
Jennifer Amigon
Arvin Albares
Johnson Sergi
Antonio Caudy
Ashley Doe
Nicolas Iturbide
Munro Ferencz
IdCountryDate
1000United Kingdom2026-05-09
1001Japan2026-05-24
1002Australia2026-05-26
1003Canada2026-05-22
1004Germany2026-05-18
1005India2026-05-31
1006India2026-05-17
1007Spain2026-05-07
1008Italy2026-05-10
1009Italy2026-05-07
1010Canada2026-05-12
1011Canada2026-05-17
1012Australia2026-05-14
1013France2026-05-10
1014Australia2026-05-17
1015Japan2026-05-20
1016Canada2026-05-07
1017United Kingdom2026-06-05
1018India2026-05-30
1019Japan2026-05-15
1020United Kingdom2026-06-03
1021Australia2026-05-08
1022Russia2026-05-20
1023United Kingdom2026-05-28
1024Japan2026-05-19
1025Argentina2026-05-30
1026Argentina2026-05-22
1027Spain2026-05-14
1028Italy2026-05-29
1029Japan2026-05-19
1030Spain2026-05-11
1031India2026-05-21
1032Brazil2026-05-20
1033Russia2026-05-08
1034Italy2026-06-05
1035France2026-05-20
1036Australia2026-05-16
1037United Kingdom2026-05-11
1038France2026-05-13
1039Argentina2026-05-29
1040United Kingdom2026-05-14
1041United Kingdom2026-05-07
1042Italy2026-05-14
1043Canada2026-05-26
1044Russia2026-05-26
1045Canada2026-05-16
1046Italy2026-05-13
1047India2026-05-25
1048Argentina2026-05-12
1049Spain2026-06-05

On-Demand Data

NameIdCountryDate
Arvin Albares1000India2026-05-19
Darci Poquette1001Italy2026-05-22
Cody Saylors1002France2026-05-16
Darci Poquette1003Spain2026-06-05
Leja Caldarera1004United Kingdom2026-05-28
Ashley Doe1005India2026-06-03
Mujtaba Nicka1006United Kingdom2026-05-09
Leja Caldarera1007Spain2026-06-01
Aditya Kusko1008India2026-05-14
Isabel Bowley1009France2026-05-31
Jeanfrancois Venere1010Australia2026-05-23
Johnson Sergi1011Brazil2026-05-14
Claire Tollner1012Australia2026-05-10
Jennifer Amigon1013United Kingdom2026-06-02
Salvatore Stockham1014Japan2026-05-17
Faith Gillian1015Canada2026-06-05
Mujtaba Nicka1016Japan2026-05-23
Ricardo Gaucho1017Argentina2026-05-10
Kadeem Flosi1018United Kingdom2026-05-23
Jennifer Amigon1019Argentina2026-05-31
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Nicolas IturbideRussiaIoni Bowcher NEW
Johnson SergiUnited KingdomAnna Fali NEW
Ricardo GauchoArgentinaBernardo Dominic PROPOSAL
Claire TollnerAustraliaAsiya Javayant QUALIFIED
Cody SaylorsGermanyAmy Elsner NEW
Izzy GarufiRussiaIvan Magalhaes QUALIFIED
Munro FerenczAustraliaIvan Magalhaes PROPOSAL
Morrow RutaRussiaAsiya Javayant NEGOTIATION
Arvin AlbaresJapanAsiya Javayant NEGOTIATION
Kaitlin OstroskyJapanAsiya Javayant PROPOSAL
Stacey MacleadFranceIvan Magalhaes RENEWAL
Kaitlin OstroskyIndiaStephen Shaw QUALIFIED
Greenwood BologniaBrazilBernardo Dominic PROPOSAL
Tony FollerFranceAmy Elsner PROPOSAL
Silvio SlusarskiUnited KingdomAsiya Javayant NEW
Claire TollnerItalyIvan Magalhaes UNQUALIFIED
Misaki RoysterBrazilAnna Fali RENEWAL
Julie StensethFranceAmy Elsner UNQUALIFIED
Misaki RoysterArgentinaAnna Fali UNQUALIFIED
Ashley DoeJapanXuxue Feng QUALIFIED
Ashley DoeIndiaOnyama Limba QUALIFIED
Misaki RoysterGermanyAmy Elsner NEW
Leja CaldareraIndiaBernardo Dominic UNQUALIFIED
Kaitlin OstroskyGermanyBernardo Dominic PROPOSAL
Rodrigues CampainBrazilAnna Fali RENEWAL
Sinclair WaycottIndiaAsiya Javayant PROPOSAL
Murillo MaletSpainAmy Elsner RENEWAL
Morrow RutaArgentinaAmy Elsner QUALIFIED
Jefferson SchemmerIndiaOnyama Limba UNQUALIFIED
Ivar PaprockiAustraliaAsiya Javayant QUALIFIED
Izzy GarufiUnited KingdomIvan Magalhaes UNQUALIFIED
Silvio SlusarskiRussiaAnna Fali UNQUALIFIED
Jeanfrancois VenereFranceIvan Magalhaes QUALIFIED
Darci PoquetteArgentinaIvan Magalhaes RENEWAL
Chavez BriddickBrazilAmy Elsner PROPOSAL
Izzy GarufiAustraliaXuxue Feng NEGOTIATION
Aruna FigeroaAustraliaAsiya Javayant NEGOTIATION
Claire TollnerFranceAmy Elsner UNQUALIFIED
Smith GlickUnited KingdomAmy Elsner NEW
Nicolas IturbideItalyBernardo Dominic 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>