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
Rodrigues CampainRussiaElwin Sharvill NEW
David DarakjyArgentinaBernardo Dominic UNQUALIFIED
Emily WhobreyGermanyAsiya Javayant NEW
Clifford RimSpainElwin Sharvill NEGOTIATION
Munro FerenczBrazilAmy Elsner PROPOSAL
Silvio SlusarskiArgentinaElwin Sharvill RENEWAL
Emily WhobreyRussiaIoni Bowcher PROPOSAL
Rodrigues CampainGermanyXuxue Feng NEW
Greenwood BologniaSpainOnyama Limba NEGOTIATION
Murillo MaletItalyStephen Shaw PROPOSAL
Alejandro PerinAustraliaIvan Magalhaes QUALIFIED
Leon OldroydRussiaIvan Magalhaes QUALIFIED
Juan WieserAustraliaAnna Fali PROPOSAL
Kadeem FlosiIndiaBernardo Dominic QUALIFIED
Aika InouyeFranceAmy Elsner NEGOTIATION
Kadeem FlosiAustraliaBernardo Dominic PROPOSAL
Maria MarrierRussiaBernardo Dominic PROPOSAL
Antonio CaudySpainOnyama Limba QUALIFIED
Darci PoquetteIndiaOnyama Limba UNQUALIFIED
Stacey MacleadItalyStephen Shaw NEGOTIATION
Greenwood BologniaItalyBernardo Dominic NEW
Greenwood BologniaUnited KingdomXuxue Feng NEGOTIATION
Stacey MacleadUnited KingdomIvan Magalhaes RENEWAL
Maisha RulapaughSpainIoni Bowcher NEW
Maisha RulapaughRussiaAsiya Javayant NEGOTIATION
Arvin AlbaresItalyBernardo Dominic QUALIFIED
David DarakjyCanadaAsiya Javayant NEGOTIATION
Munro FerenczItalyIvan Magalhaes NEGOTIATION
Costa DilliardUnited KingdomBernardo Dominic NEGOTIATION
Mayumi KolmetzCanadaAnna Fali NEGOTIATION
Antonio CaudyUnited KingdomStephen Shaw UNQUALIFIED
Greenwood BologniaAustraliaIoni Bowcher RENEWAL
Costa DilliardSpainAsiya Javayant NEGOTIATION
Misaki RoysterCanadaIvan Magalhaes QUALIFIED
Nicolas IturbideBrazilIvan Magalhaes NEW
Salvatore StockhamItalyBernardo Dominic RENEWAL
Adams MorascaJapanElwin Sharvill RENEWAL
Maisha RulapaughBrazilIvan Magalhaes RENEWAL
Adams MorascaArgentinaXuxue Feng NEW
Smith GlickItalyAsiya Javayant QUALIFIED
Jeanfrancois VenereCanadaOnyama Limba NEW
Leja CaldareraIndiaAnna Fali NEGOTIATION
Silvio SlusarskiIndiaXuxue Feng NEGOTIATION
Smith GlickAustraliaStephen Shaw NEW
Jefferson SchemmerFranceIoni Bowcher RENEWAL
Mujtaba NickaJapanAsiya Javayant NEGOTIATION
James ButtIndiaElwin Sharvill UNQUALIFIED
Ivar PaprockiGermanyAnna Fali PROPOSAL
Stacey MacleadSpainStephen Shaw RENEWAL
Jefferson SchemmerCanadaStephen Shaw QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Misaki RoysterCanadaAmy Elsner PROPOSAL
Jefferson SchemmerSpainAmy Elsner UNQUALIFIED
Aruna FigeroaBrazilAmy Elsner UNQUALIFIED
Stacey MacleadCanadaIoni Bowcher NEGOTIATION
Maisha RulapaughItalyElwin Sharvill RENEWAL
Aika InouyeIndiaAsiya Javayant NEW
Rodrigues CampainBrazilAmy Elsner UNQUALIFIED
Ashley DoeAustraliaIoni Bowcher RENEWAL
Salvatore StockhamIndiaStephen Shaw PROPOSAL
Jefferson SchemmerIndiaIvan Magalhaes QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Antonio CaudyBrazil2026-03-30Morlong Associates RENEWAL78Ivan Magalhaes
1001Adams MorascaRussia2026-03-31Chanay, Jeffrey A Esq RENEWAL90Onyama Limba
1002Leon OldroydBrazil2026-03-30King, Christopher A Esq NEW93Stephen Shaw
1003Leja CaldareraFrance2026-04-24King, Christopher A Esq UNQUALIFIED43Ioni Bowcher
1004Julie StensethCanada2026-04-05Feiner Bros NEW88Stephen Shaw
1005Tony FollerGermany2026-04-10Chapman, Ross E Esq RENEWAL66Elwin Sharvill
1006Morrow RutaFrance2026-04-24Chemel, James L Cpa NEGOTIATION94Bernardo Dominic
1007Aruna FigeroaUnited Kingdom2026-04-09Chapman, Ross E Esq QUALIFIED60Amy Elsner
1008Munro FerenczGermany2026-04-03Chapman, Ross E Esq NEGOTIATION90Xuxue Feng
1009Morrow RutaCanada2026-04-21Benton, John B Jr NEW63Anna Fali
1010Mayumi KolmetzBrazil2026-04-21Chanay, Jeffrey A Esq RENEWAL67Asiya Javayant
1011Cody SaylorsCanada2026-04-04Rangoni Of Florence NEW38Bernardo Dominic
1012Octavia MaletArgentina2026-04-16Rangoni Of Florence RENEWAL94Anna Fali
1013Misaki RoysterGermany2026-04-16Chanay, Jeffrey A Esq NEGOTIATION80Stephen Shaw
1014Aditya KuskoUnited Kingdom2026-04-07Rangoni Of Florence NEGOTIATION11Anna Fali
1015Claire TollnerSpain2026-04-01Feiner Bros RENEWAL4Bernardo Dominic
1016Stacey MacleadIndia2026-04-24Printing Dimensions NEW72Stephen Shaw
1017Adams MorascaUnited Kingdom2026-04-20Chanay, Jeffrey A Esq RENEWAL66Amy Elsner
1018Kadeem FlosiAustralia2026-04-07Morlong Associates RENEWAL4Amy Elsner
1019Misaki RoysterBrazil2026-03-31Rousseaux, Michael Esq PROPOSAL41Amy Elsner
1020Leon OldroydSpain2026-04-18Feiner Bros RENEWAL80Elwin Sharvill
1021Leon OldroydGermany2026-04-04Feltz Printing Service RENEWAL7Asiya Javayant
1022Kadeem FlosiCanada2026-04-10Truhlar And Truhlar Attys RENEWAL83Onyama Limba
1023Octavia MaletJapan2026-04-19Chanay, Jeffrey A Esq NEGOTIATION21Stephen Shaw
1024Cody SaylorsArgentina2026-04-11Chemel, James L Cpa RENEWAL92Bernardo Dominic
1025Morrow RutaUnited Kingdom2026-04-15Rangoni Of Florence UNQUALIFIED3Amy Elsner
1026Johnson SergiGermany2026-04-11Truhlar And Truhlar Attys QUALIFIED2Ioni Bowcher
1027Adams MorascaUnited Kingdom2026-04-07Truhlar And Truhlar Attys RENEWAL59Xuxue Feng
1028Morrow RutaGermany2026-04-26Chanay, Jeffrey A Esq NEGOTIATION52Anna Fali
1029Claire TollnerArgentina2026-04-12Rousseaux, Michael Esq NEW90Ioni Bowcher
1030Faith GillianUnited Kingdom2026-04-08Morlong Associates PROPOSAL78Xuxue Feng
1031Adams MorascaItaly2026-04-11Feiner Bros UNQUALIFIED18Bernardo Dominic
1032Leja CaldareraBrazil2026-04-18Chanay, Jeffrey A Esq NEGOTIATION58Elwin Sharvill
1033Mujtaba NickaFrance2026-04-16Chemel, James L Cpa NEGOTIATION55Bernardo Dominic
1034Isabel BowleyItaly2026-04-03Benton, John B Jr UNQUALIFIED55Xuxue Feng
1035Faith GillianArgentina2026-03-31Dorl, James J Esq NEGOTIATION79Stephen Shaw
1036Ashley DoeAustralia2026-04-19Chemel, James L Cpa RENEWAL15Asiya Javayant
1037Izzy GarufiItaly2026-04-14Chanay, Jeffrey A Esq PROPOSAL30Stephen Shaw
1038Maria MarrierAustralia2026-03-31Feltz Printing Service UNQUALIFIED24Asiya Javayant
1039Maisha RulapaughArgentina2026-04-11King, Christopher A Esq NEW18Ioni Bowcher
1040Greenwood BologniaBrazil2026-04-19Printing Dimensions NEGOTIATION89Bernardo Dominic
1041Maria MarrierUnited Kingdom2026-04-10Rousseaux, Michael Esq NEW34Anna Fali
1042Mujtaba NickaGermany2026-03-31Buckley Miller Wright NEW77Ivan Magalhaes
1043Sinclair WaycottArgentina2026-04-21Feiner Bros NEW23Ioni Bowcher
1044Smith GlickIndia2026-04-23Commercial Press NEW88Elwin Sharvill
1045Clifford RimItaly2026-04-19Chanay, Jeffrey A Esq NEW16Onyama Limba
1046Mayumi KolmetzIndia2026-04-07Morlong Associates QUALIFIED98Elwin Sharvill
1047Wickens NestleJapan2026-04-15Chemel, James L Cpa QUALIFIED58Ivan Magalhaes
1048Francesco ShinkoRussia2026-03-31Commercial Press NEGOTIATION74Onyama Limba
1049Juan WieserIndia2026-04-22Chanay, Jeffrey A Esq NEW96Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Maisha RulapaughCanadaStephen Shaw QUALIFIED
Darci PoquetteSpainOnyama Limba PROPOSAL
Aditya KuskoIndiaElwin Sharvill RENEWAL
Munro FerenczUnited KingdomIvan Magalhaes UNQUALIFIED
Jeanfrancois VenereSpainAmy Elsner PROPOSAL
Ashley DoeAustraliaXuxue Feng NEW
Murillo MaletIndiaStephen Shaw UNQUALIFIED
Julie StensethFranceAmy Elsner NEGOTIATION
Darci PoquetteSpainOnyama Limba NEGOTIATION
Aditya KuskoGermanyAsiya Javayant UNQUALIFIED
Francesco ShinkoCanadaAmy Elsner NEGOTIATION
Kadeem FlosiRussiaXuxue Feng UNQUALIFIED
Leon OldroydBrazilBernardo Dominic QUALIFIED
Greenwood BologniaArgentinaOnyama Limba QUALIFIED
Murillo MaletRussiaStephen Shaw PROPOSAL
Alejandro PerinItalyStephen Shaw UNQUALIFIED
Morrow RutaFranceIoni Bowcher PROPOSAL
Emily WhobreyRussiaBernardo Dominic QUALIFIED
Jeanfrancois VenereGermanyAsiya Javayant NEW
Aditya KuskoGermanyAnna Fali PROPOSAL
David DarakjyJapanAmy Elsner QUALIFIED
Deepesh ChuiRussiaIoni Bowcher PROPOSAL
Munro FerenczCanadaAmy Elsner NEGOTIATION
Francesco ShinkoGermanyAmy Elsner NEGOTIATION
Ricardo GauchoArgentinaBernardo Dominic NEGOTIATION
Munro FerenczBrazilIvan Magalhaes NEW
Claire TollnerIndiaIvan Magalhaes UNQUALIFIED
Cody SaylorsArgentinaIoni Bowcher PROPOSAL
Morrow RutaGermanyIvan Magalhaes RENEWAL
Aika InouyeItalyAnna Fali PROPOSAL
Misaki RoysterJapanElwin Sharvill QUALIFIED
Ricardo GauchoFranceXuxue Feng UNQUALIFIED
Salvatore StockhamCanadaAsiya Javayant RENEWAL
Misaki RoysterSpainBernardo Dominic NEGOTIATION
Leja CaldareraItalyBernardo Dominic QUALIFIED
Maisha RulapaughJapanIoni Bowcher NEW
Morrow RutaFranceBernardo Dominic NEW
Darci PoquetteRussiaIvan Magalhaes UNQUALIFIED
Sinclair WaycottCanadaOnyama Limba RENEWAL
Wickens NestleRussiaOnyama Limba PROPOSAL
Aditya KuskoUnited KingdomAnna Fali QUALIFIED
Misaki RoysterJapanOnyama Limba UNQUALIFIED
Murillo MaletCanadaXuxue Feng RENEWAL
Isabel BowleySpainXuxue Feng PROPOSAL
Jefferson SchemmerCanadaIvan Magalhaes NEW
Jefferson SchemmerSpainOnyama Limba NEW
Aditya KuskoItalyAmy Elsner NEW
Jefferson SchemmerBrazilIoni Bowcher QUALIFIED
Rodrigues CampainBrazilIvan Magalhaes NEGOTIATION
Ashley DoeSpainXuxue Feng PROPOSAL
Frozen Columns
Name
Leon Oldroyd
Chavez Briddick
Cody Saylors
Aika Inouye
Darci Poquette
Julie Stenseth
Izzy Garufi
Aruna Figeroa
Nicolas Iturbide
Ashley Doe
Murillo Malet
Ricardo Gaucho
Silvio Slusarski
Rodrigues Campain
Leon Oldroyd
Sinclair Waycott
Cody Saylors
Kadeem Flosi
Julie Stenseth
Cody Saylors
Wickens Nestle
Murillo Malet
Aika Inouye
Alejandro Perin
Isabel Bowley
Stacey Maclead
Wickens Nestle
Izzy Garufi
Maisha Rulapaugh
Wickens Nestle
Sinclair Waycott
Costa Dilliard
Julie Stenseth
Nicolas Iturbide
Maria Marrier
Faith Gillian
Maria Marrier
Aditya Kusko
James Butt
Izzy Garufi
Kadeem Flosi
Stacey Maclead
Julie Stenseth
Emily Whobrey
Aditya Kusko
Julie Stenseth
Mujtaba Nicka
Nicolas Iturbide
Arvin Albares
Smith Glick
IdCountryDate
1000Argentina2026-04-26
1001Italy2026-04-24
1002United Kingdom2026-04-16
1003Australia2026-04-04
1004Italy2026-04-21
1005India2026-04-17
1006France2026-04-04
1007India2026-04-20
1008Argentina2026-04-01
1009Russia2026-04-20
1010Argentina2026-03-31
1011Russia2026-03-30
1012Japan2026-04-13
1013Germany2026-04-12
1014Italy2026-04-07
1015Russia2026-04-20
1016Australia2026-04-07
1017United Kingdom2026-04-25
1018India2026-04-01
1019France2026-04-03
1020Italy2026-04-06
1021India2026-04-21
1022United Kingdom2026-03-28
1023France2026-04-12
1024France2026-04-01
1025Germany2026-04-19
1026United Kingdom2026-04-23
1027Canada2026-03-28
1028Germany2026-04-19
1029Brazil2026-04-02
1030Australia2026-04-22
1031Germany2026-04-21
1032Argentina2026-04-11
1033Australia2026-04-14
1034Russia2026-04-14
1035Spain2026-04-20
1036United Kingdom2026-04-23
1037Germany2026-04-07
1038Brazil2026-04-13
1039Australia2026-04-15
1040Argentina2026-04-20
1041Spain2026-03-28
1042France2026-04-21
1043Argentina2026-04-08
1044Australia2026-04-01
1045Australia2026-03-29
1046Brazil2026-04-13
1047Argentina2026-04-16
1048Australia2026-04-04
1049Japan2026-04-26

On-Demand Data

NameIdCountryDate
Ashley Doe1000Italy2026-04-14
Stacey Maclead1001United Kingdom2026-04-15
Leja Caldarera1002United Kingdom2026-03-30
Tony Foller1003United Kingdom2026-04-06
Jeanfrancois Venere1004India2026-04-04
Misaki Royster1005Russia2026-04-26
Salvatore Stockham1006Spain2026-04-12
Leon Oldroyd1007United Kingdom2026-04-07
Faith Gillian1008Italy2026-04-15
Arvin Albares1009Spain2026-03-29
Silvio Slusarski1010India2026-04-23
Darci Poquette1011Japan2026-04-08
Morrow Ruta1012United Kingdom2026-04-01
Jennifer Amigon1013France2026-04-25
Arvin Albares1014Spain2026-04-23
Chavez Briddick1015India2026-03-29
Kaitlin Ostrosky1016Brazil2026-04-17
Misaki Royster1017Italy2026-04-15
Greenwood Bolognia1018Canada2026-04-07
James Butt1019United Kingdom2026-03-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Morrow RutaBrazilXuxue Feng RENEWAL
Juan WieserSpainIvan Magalhaes QUALIFIED
Ivar PaprockiCanadaStephen Shaw NEGOTIATION
Francesco ShinkoFranceIvan Magalhaes PROPOSAL
Morrow RutaRussiaElwin Sharvill QUALIFIED
Francesco ShinkoBrazilBernardo Dominic PROPOSAL
Kadeem FlosiAustraliaAmy Elsner PROPOSAL
Mayumi KolmetzItalyElwin Sharvill NEGOTIATION
Costa DilliardItalyBernardo Dominic RENEWAL
Nicolas IturbideUnited KingdomAsiya Javayant RENEWAL
Sinclair WaycottFranceIoni Bowcher RENEWAL
Kaitlin OstroskyArgentinaIoni Bowcher PROPOSAL
Faith GillianIndiaAsiya Javayant PROPOSAL
Salvatore StockhamRussiaAmy Elsner QUALIFIED
Antonio CaudyBrazilBernardo Dominic NEW
Francesco ShinkoArgentinaOnyama Limba RENEWAL
Salvatore StockhamCanadaAnna Fali NEGOTIATION
Juan WieserCanadaAnna Fali UNQUALIFIED
Sinclair WaycottRussiaAnna Fali NEGOTIATION
Juan WieserIndiaBernardo Dominic PROPOSAL
Aditya KuskoJapanElwin Sharvill PROPOSAL
Isabel BowleyJapanAmy Elsner NEW
Leon OldroydBrazilAmy Elsner UNQUALIFIED
Adams MorascaAustraliaIoni Bowcher NEW
Jeanfrancois VenereSpainOnyama Limba RENEWAL
Antonio CaudyGermanyAsiya Javayant NEGOTIATION
Aika InouyeIndiaAmy Elsner NEW
Leja CaldareraGermanyAnna Fali RENEWAL
Murillo MaletIndiaIoni Bowcher NEW
Greenwood BologniaBrazilXuxue Feng UNQUALIFIED
Faith GillianJapanXuxue Feng NEGOTIATION
James ButtFranceIvan Magalhaes QUALIFIED
Clifford RimGermanyStephen Shaw NEW
Jennifer AmigonSpainAnna Fali QUALIFIED
Deepesh ChuiUnited KingdomOnyama Limba NEGOTIATION
Kadeem FlosiRussiaBernardo Dominic PROPOSAL
Maria MarrierGermanyElwin Sharvill RENEWAL
Cody SaylorsBrazilIoni Bowcher UNQUALIFIED
Munro FerenczJapanXuxue Feng NEGOTIATION
Maria MarrierRussiaElwin Sharvill PROPOSAL

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