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
Jones VocelkaGermanyIvan Magalhaes RENEWAL
Misaki RoysterAustraliaIoni Bowcher QUALIFIED
Cody SaylorsBrazilIoni Bowcher NEGOTIATION
Aruna FigeroaJapanIoni Bowcher RENEWAL
Cody SaylorsArgentinaStephen Shaw QUALIFIED
James ButtFranceStephen Shaw PROPOSAL
Maria MarrierGermanyAsiya Javayant RENEWAL
Jennifer AmigonSpainAsiya Javayant UNQUALIFIED
Emily WhobreyUnited KingdomBernardo Dominic NEW
David DarakjyRussiaOnyama Limba NEGOTIATION
Rodrigues CampainJapanOnyama Limba RENEWAL
Tony FollerGermanyAsiya Javayant NEW
Julie StensethItalyAsiya Javayant UNQUALIFIED
Cody SaylorsIndiaAmy Elsner RENEWAL
Rodrigues CampainIndiaIoni Bowcher UNQUALIFIED
Sinclair WaycottItalyAsiya Javayant NEW
Kaitlin OstroskyUnited KingdomBernardo Dominic PROPOSAL
Adams MorascaBrazilBernardo Dominic NEW
Aika InouyeFranceIvan Magalhaes PROPOSAL
Salvatore StockhamArgentinaAnna Fali UNQUALIFIED
Emily WhobreyAustraliaIvan Magalhaes QUALIFIED
Salvatore StockhamGermanyBernardo Dominic RENEWAL
Misaki RoysterGermanyOnyama Limba UNQUALIFIED
Misaki RoysterGermanyIoni Bowcher PROPOSAL
Aditya KuskoUnited KingdomAmy Elsner PROPOSAL
Faith GillianJapanBernardo Dominic QUALIFIED
Salvatore StockhamJapanElwin Sharvill QUALIFIED
Costa DilliardRussiaOnyama Limba NEGOTIATION
Jennifer AmigonSpainAmy Elsner UNQUALIFIED
Jones VocelkaGermanyElwin Sharvill UNQUALIFIED
Ashley DoeRussiaAmy Elsner RENEWAL
Jennifer AmigonBrazilIvan Magalhaes NEW
Izzy GarufiFranceOnyama Limba RENEWAL
Misaki RoysterAustraliaIoni Bowcher QUALIFIED
Cody SaylorsJapanIoni Bowcher RENEWAL
Salvatore StockhamCanadaAnna Fali RENEWAL
Smith GlickFranceBernardo Dominic UNQUALIFIED
Adams MorascaArgentinaAmy Elsner QUALIFIED
James ButtRussiaIvan Magalhaes NEGOTIATION
Emily WhobreyRussiaBernardo Dominic QUALIFIED
Francesco ShinkoSpainAmy Elsner RENEWAL
Antonio CaudyAustraliaIvan Magalhaes PROPOSAL
Jones VocelkaRussiaAnna Fali PROPOSAL
Clifford RimBrazilStephen Shaw NEGOTIATION
Adams MorascaGermanyAsiya Javayant UNQUALIFIED
Aditya KuskoGermanyBernardo Dominic PROPOSAL
Misaki RoysterAustraliaOnyama Limba RENEWAL
Darci PoquetteGermanyIvan Magalhaes RENEWAL
Chavez BriddickCanadaOnyama Limba RENEWAL
Ashley DoeItalyAnna Fali PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Mayumi KolmetzFranceIvan Magalhaes RENEWAL
Emily WhobreyIndiaIvan Magalhaes RENEWAL
Sinclair WaycottAustraliaStephen Shaw QUALIFIED
Arvin AlbaresArgentinaIoni Bowcher NEGOTIATION
Isabel BowleyGermanyStephen Shaw NEW
Costa DilliardArgentinaStephen Shaw PROPOSAL
Johnson SergiAustraliaXuxue Feng NEGOTIATION
Isabel BowleyRussiaXuxue Feng UNQUALIFIED
Clifford RimCanadaXuxue Feng UNQUALIFIED
Kaitlin OstroskyItalyElwin Sharvill PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Clifford RimSpain2026-05-26Morlong Associates NEGOTIATION68Asiya Javayant
1001Claire TollnerIndia2026-06-12Chapman, Ross E Esq UNQUALIFIED95Elwin Sharvill
1002Misaki RoysterItaly2026-05-23Buckley Miller Wright NEGOTIATION98Asiya Javayant
1003Johnson SergiUnited Kingdom2026-05-31Commercial Press NEGOTIATION13Onyama Limba
1004Claire TollnerIndia2026-06-05Buckley Miller Wright NEW23Amy Elsner
1005Cody SaylorsBrazil2026-06-11Chanay, Jeffrey A Esq RENEWAL15Amy Elsner
1006Faith GillianSpain2026-06-12Truhlar And Truhlar Attys UNQUALIFIED44Elwin Sharvill
1007Isabel BowleyBrazil2026-05-28Dorl, James J Esq QUALIFIED30Ivan Magalhaes
1008Faith GillianSpain2026-06-08King, Christopher A Esq UNQUALIFIED40Bernardo Dominic
1009Nicolas IturbideJapan2026-06-05Feltz Printing Service NEW13Elwin Sharvill
1010Jones VocelkaSpain2026-05-24Chemel, James L Cpa QUALIFIED11Amy Elsner
1011Maria MarrierAustralia2026-06-08Commercial Press NEW17Ivan Magalhaes
1012Ricardo GauchoGermany2026-05-19Chanay, Jeffrey A Esq RENEWAL5Ioni Bowcher
1013Johnson SergiArgentina2026-06-12Rousseaux, Michael Esq UNQUALIFIED95Onyama Limba
1014Arvin AlbaresFrance2026-06-03Chapman, Ross E Esq UNQUALIFIED26Amy Elsner
1015Maisha RulapaughIndia2026-06-02Morlong Associates NEGOTIATION26Asiya Javayant
1016Johnson SergiIndia2026-05-16Chemel, James L Cpa QUALIFIED32Xuxue Feng
1017Emily WhobreyAustralia2026-05-28Truhlar And Truhlar Attys UNQUALIFIED98Onyama Limba
1018Faith GillianUnited Kingdom2026-05-17Truhlar And Truhlar Attys NEW48Bernardo Dominic
1019Faith GillianRussia2026-05-27Printing Dimensions PROPOSAL41Bernardo Dominic
1020Kadeem FlosiArgentina2026-06-04Commercial Press UNQUALIFIED65Amy Elsner
1021Ivar PaprockiAustralia2026-06-09Chapman, Ross E Esq UNQUALIFIED70Stephen Shaw
1022Maisha RulapaughArgentina2026-05-29Rangoni Of Florence QUALIFIED1Elwin Sharvill
1023Chavez BriddickSpain2026-05-27Commercial Press NEGOTIATION50Amy Elsner
1024Jefferson SchemmerArgentina2026-06-05Buckley Miller Wright RENEWAL77Amy Elsner
1025Leja CaldareraCanada2026-06-05Benton, John B Jr PROPOSAL97Ivan Magalhaes
1026David DarakjyIndia2026-05-25Chemel, James L Cpa NEGOTIATION45Stephen Shaw
1027Wickens NestleSpain2026-06-07Feltz Printing Service NEGOTIATION56Asiya Javayant
1028Stacey MacleadSpain2026-06-11Commercial Press QUALIFIED73Anna Fali
1029Ashley DoeArgentina2026-05-28Chanay, Jeffrey A Esq RENEWAL15Elwin Sharvill
1030Kaitlin OstroskyBrazil2026-05-17Rousseaux, Michael Esq PROPOSAL51Asiya Javayant
1031Ricardo GauchoSpain2026-05-27Dorl, James J Esq QUALIFIED24Bernardo Dominic
1032Silvio SlusarskiCanada2026-06-11Feiner Bros NEW88Bernardo Dominic
1033Jeanfrancois VenereGermany2026-06-07Rangoni Of Florence PROPOSAL36Anna Fali
1034Ivar PaprockiGermany2026-06-07Feiner Bros UNQUALIFIED22Ioni Bowcher
1035Rodrigues CampainBrazil2026-06-13Benton, John B Jr UNQUALIFIED99Elwin Sharvill
1036Leon OldroydJapan2026-05-20Printing Dimensions RENEWAL19Stephen Shaw
1037Munro FerenczGermany2026-06-05King, Christopher A Esq PROPOSAL90Onyama Limba
1038Munro FerenczSpain2026-06-01Truhlar And Truhlar Attys PROPOSAL42Stephen Shaw
1039Adams MorascaFrance2026-05-19Feiner Bros PROPOSAL58Amy Elsner
1040Leon OldroydArgentina2026-05-19Dorl, James J Esq PROPOSAL82Asiya Javayant
1041Darci PoquetteArgentina2026-06-13Printing Dimensions UNQUALIFIED61Bernardo Dominic
1042Ivar PaprockiItaly2026-06-11Truhlar And Truhlar Attys NEGOTIATION89Amy Elsner
1043Ashley DoeUnited Kingdom2026-06-09Feiner Bros UNQUALIFIED5Stephen Shaw
1044Jones VocelkaGermany2026-06-11Dorl, James J Esq QUALIFIED40Elwin Sharvill
1045Tony FollerArgentina2026-05-26Rousseaux, Michael Esq QUALIFIED63Ivan Magalhaes
1046Munro FerenczArgentina2026-06-10Morlong Associates QUALIFIED30Elwin Sharvill
1047Aditya KuskoUnited Kingdom2026-06-04Printing Dimensions NEW68Onyama Limba
1048Mujtaba NickaUnited Kingdom2026-05-29Feiner Bros QUALIFIED1Amy Elsner
1049James ButtFrance2026-06-09Benton, John B Jr RENEWAL11Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Leon OldroydJapanAmy Elsner NEW
Jefferson SchemmerIndiaAsiya Javayant UNQUALIFIED
Mayumi KolmetzUnited KingdomXuxue Feng UNQUALIFIED
Stacey MacleadAustraliaIvan Magalhaes NEGOTIATION
Isabel BowleyCanadaOnyama Limba RENEWAL
Faith GillianArgentinaAmy Elsner QUALIFIED
Faith GillianItalyOnyama Limba NEGOTIATION
Nicolas IturbideSpainAmy Elsner QUALIFIED
Faith GillianUnited KingdomStephen Shaw RENEWAL
Johnson SergiGermanyElwin Sharvill NEGOTIATION
Jones VocelkaIndiaAsiya Javayant NEW
Ricardo GauchoIndiaXuxue Feng RENEWAL
Jefferson SchemmerItalyAmy Elsner UNQUALIFIED
Chavez BriddickItalyXuxue Feng RENEWAL
Johnson SergiIndiaOnyama Limba NEW
Antonio CaudyIndiaAsiya Javayant UNQUALIFIED
Rodrigues CampainFranceIvan Magalhaes UNQUALIFIED
Deepesh ChuiRussiaAnna Fali QUALIFIED
Jones VocelkaItalyAsiya Javayant NEW
Jennifer AmigonJapanAmy Elsner UNQUALIFIED
Claire TollnerIndiaXuxue Feng QUALIFIED
Deepesh ChuiIndiaIvan Magalhaes NEW
Rodrigues CampainArgentinaIvan Magalhaes PROPOSAL
Alejandro PerinRussiaIvan Magalhaes RENEWAL
Maisha RulapaughSpainAsiya Javayant PROPOSAL
Jennifer AmigonSpainStephen Shaw RENEWAL
Kaitlin OstroskyArgentinaXuxue Feng QUALIFIED
Wickens NestleUnited KingdomIvan Magalhaes UNQUALIFIED
Rodrigues CampainBrazilIvan Magalhaes PROPOSAL
Juan WieserCanadaElwin Sharvill NEGOTIATION
Adams MorascaJapanIvan Magalhaes NEW
Ashley DoeItalyIoni Bowcher PROPOSAL
Chavez BriddickItalyStephen Shaw QUALIFIED
Misaki RoysterAustraliaAnna Fali QUALIFIED
Silvio SlusarskiRussiaIoni Bowcher NEW
Adams MorascaFranceAnna Fali RENEWAL
Maria MarrierAustraliaIoni Bowcher RENEWAL
Octavia MaletAustraliaAsiya Javayant PROPOSAL
Aditya KuskoGermanyBernardo Dominic NEGOTIATION
James ButtIndiaXuxue Feng PROPOSAL
Jennifer AmigonJapanStephen Shaw QUALIFIED
Alejandro PerinCanadaIvan Magalhaes RENEWAL
Claire TollnerSpainOnyama Limba QUALIFIED
Salvatore StockhamSpainAsiya Javayant NEW
Ashley DoeSpainOnyama Limba PROPOSAL
Kadeem FlosiAustraliaAmy Elsner RENEWAL
Silvio SlusarskiIndiaOnyama Limba NEGOTIATION
Isabel BowleyIndiaIvan Magalhaes PROPOSAL
Francesco ShinkoArgentinaAsiya Javayant RENEWAL
Jennifer AmigonItalyXuxue Feng QUALIFIED
Frozen Columns
Name
Misaki Royster
Jennifer Amigon
Murillo Malet
Juan Wieser
Claire Tollner
Julie Stenseth
Arvin Albares
Kadeem Flosi
Maisha Rulapaugh
Leja Caldarera
Wickens Nestle
Faith Gillian
Chavez Briddick
Sinclair Waycott
Clifford Rim
Kaitlin Ostrosky
Maisha Rulapaugh
Alejandro Perin
Alejandro Perin
Chavez Briddick
Misaki Royster
Deepesh Chui
Wickens Nestle
Faith Gillian
Kaitlin Ostrosky
Stacey Maclead
Rodrigues Campain
Aruna Figeroa
Antonio Caudy
Sinclair Waycott
Julie Stenseth
Smith Glick
Stacey Maclead
Francesco Shinko
Juan Wieser
Izzy Garufi
Smith Glick
Cody Saylors
Morrow Ruta
Misaki Royster
Rodrigues Campain
Ashley Doe
Emily Whobrey
Ivar Paprocki
Ivar Paprocki
Murillo Malet
Murillo Malet
Rodrigues Campain
Maria Marrier
Aruna Figeroa
IdCountryDate
1000Australia2026-06-04
1001Spain2026-05-15
1002Russia2026-05-29
1003Russia2026-06-04
1004Australia2026-05-25
1005United Kingdom2026-05-19
1006Canada2026-05-30
1007Germany2026-05-18
1008Canada2026-06-11
1009India2026-06-04
1010Brazil2026-05-19
1011Australia2026-05-20
1012Russia2026-06-03
1013Russia2026-06-01
1014Argentina2026-05-21
1015Australia2026-06-11
1016Germany2026-05-24
1017Spain2026-06-03
1018Japan2026-05-25
1019Italy2026-05-27
1020Argentina2026-05-23
1021Japan2026-05-15
1022France2026-06-12
1023Australia2026-06-03
1024Australia2026-06-02
1025India2026-05-27
1026Spain2026-05-26
1027Japan2026-06-02
1028Australia2026-05-23
1029United Kingdom2026-05-22
1030Japan2026-06-04
1031Canada2026-05-15
1032Spain2026-05-29
1033Canada2026-06-03
1034Germany2026-06-08
1035United Kingdom2026-06-11
1036Australia2026-05-27
1037Spain2026-06-13
1038Brazil2026-06-04
1039Argentina2026-05-18
1040Russia2026-06-03
1041Canada2026-05-21
1042Australia2026-05-16
1043Australia2026-06-13
1044India2026-06-02
1045France2026-05-21
1046Argentina2026-06-08
1047Australia2026-05-18
1048Italy2026-06-01
1049Germany2026-05-24

On-Demand Data

NameIdCountryDate
Cody Saylors1000Germany2026-05-18
Aruna Figeroa1001India2026-06-08
Ivar Paprocki1002Russia2026-06-05
Silvio Slusarski1003Canada2026-05-27
Murillo Malet1004Canada2026-05-29
Costa Dilliard1005Brazil2026-06-03
Mayumi Kolmetz1006Italy2026-06-10
Antonio Caudy1007United Kingdom2026-06-11
Alejandro Perin1008India2026-05-28
Arvin Albares1009Germany2026-06-09
Cody Saylors1010Australia2026-06-10
Julie Stenseth1011France2026-06-09
Emily Whobrey1012Spain2026-05-30
Arvin Albares1013Italy2026-05-19
Jeanfrancois Venere1014India2026-05-22
Silvio Slusarski1015Canada2026-05-31
Antonio Caudy1016Japan2026-05-15
Aruna Figeroa1017Canada2026-06-01
Claire Tollner1018France2026-06-01
Rodrigues Campain1019Spain2026-06-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Wickens NestleRussiaStephen Shaw RENEWAL
Octavia MaletArgentinaElwin Sharvill NEGOTIATION
Misaki RoysterJapanOnyama Limba NEW
Faith GillianSpainBernardo Dominic NEW
Isabel BowleyRussiaAsiya Javayant PROPOSAL
Rodrigues CampainItalyElwin Sharvill UNQUALIFIED
Cody SaylorsItalyStephen Shaw UNQUALIFIED
Munro FerenczSpainAnna Fali PROPOSAL
Izzy GarufiJapanIvan Magalhaes UNQUALIFIED
Rodrigues CampainArgentinaAnna Fali UNQUALIFIED
Ashley DoeAustraliaStephen Shaw RENEWAL
Deepesh ChuiItalyAsiya Javayant QUALIFIED
Ivar PaprockiSpainBernardo Dominic QUALIFIED
Deepesh ChuiRussiaIvan Magalhaes NEGOTIATION
Morrow RutaSpainXuxue Feng NEGOTIATION
Clifford RimItalyAmy Elsner UNQUALIFIED
Misaki RoysterFranceXuxue Feng NEW
Greenwood BologniaGermanyAnna Fali UNQUALIFIED
Greenwood BologniaFranceIvan Magalhaes NEW
Silvio SlusarskiIndiaAmy Elsner RENEWAL
Salvatore StockhamBrazilElwin Sharvill NEGOTIATION
Morrow RutaGermanyAnna Fali NEW
Jennifer AmigonBrazilAsiya Javayant PROPOSAL
Maria MarrierRussiaAmy Elsner RENEWAL
Clifford RimUnited KingdomXuxue Feng UNQUALIFIED
Leon OldroydFranceIoni Bowcher RENEWAL
Julie StensethAustraliaElwin Sharvill QUALIFIED
Leja CaldareraItalyIoni Bowcher PROPOSAL
Stacey MacleadAustraliaXuxue Feng NEW
Johnson SergiRussiaIvan Magalhaes UNQUALIFIED
Clifford RimBrazilAnna Fali PROPOSAL
Izzy GarufiFranceIoni Bowcher NEW
David DarakjyArgentinaAsiya Javayant RENEWAL
Deepesh ChuiRussiaOnyama Limba QUALIFIED
Sinclair WaycottArgentinaAsiya Javayant PROPOSAL
Misaki RoysterSpainBernardo Dominic PROPOSAL
Kaitlin OstroskySpainStephen Shaw UNQUALIFIED
Johnson SergiUnited KingdomIvan Magalhaes PROPOSAL
Aika InouyeCanadaXuxue Feng NEW
Nicolas IturbideItalyOnyama Limba 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>