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
Ashley DoeItalyAsiya Javayant PROPOSAL
Misaki RoysterGermanyAnna Fali NEW
Octavia MaletJapanIoni Bowcher QUALIFIED
Maria MarrierUnited KingdomElwin Sharvill NEW
Ashley DoeBrazilBernardo Dominic PROPOSAL
Salvatore StockhamJapanStephen Shaw UNQUALIFIED
Deepesh ChuiAustraliaBernardo Dominic NEGOTIATION
Emily WhobreyRussiaIvan Magalhaes NEW
Wickens NestleArgentinaOnyama Limba QUALIFIED
Johnson SergiBrazilBernardo Dominic RENEWAL
Maisha RulapaughSpainAmy Elsner PROPOSAL
Wickens NestleIndiaOnyama Limba PROPOSAL
Salvatore StockhamBrazilOnyama Limba PROPOSAL
Alejandro PerinCanadaIoni Bowcher UNQUALIFIED
Tony FollerBrazilXuxue Feng NEGOTIATION
Kaitlin OstroskyCanadaStephen Shaw UNQUALIFIED
Sinclair WaycottUnited KingdomElwin Sharvill PROPOSAL
Munro FerenczFranceIoni Bowcher RENEWAL
Octavia MaletBrazilStephen Shaw NEW
Clifford RimItalyStephen Shaw NEW
Claire TollnerIndiaAmy Elsner UNQUALIFIED
Kaitlin OstroskyItalyStephen Shaw NEW
Aika InouyeArgentinaStephen Shaw UNQUALIFIED
Leja CaldareraItalyOnyama Limba PROPOSAL
Octavia MaletAustraliaAsiya Javayant NEW
Maisha RulapaughFranceAsiya Javayant PROPOSAL
Ricardo GauchoUnited KingdomBernardo Dominic QUALIFIED
Kaitlin OstroskyArgentinaXuxue Feng UNQUALIFIED
Maria MarrierCanadaIvan Magalhaes QUALIFIED
Munro FerenczCanadaIoni Bowcher NEGOTIATION
Francesco ShinkoArgentinaOnyama Limba NEGOTIATION
Cody SaylorsFranceBernardo Dominic NEGOTIATION
Mayumi KolmetzRussiaElwin Sharvill RENEWAL
Salvatore StockhamCanadaAsiya Javayant RENEWAL
Cody SaylorsIndiaXuxue Feng NEGOTIATION
Ricardo GauchoRussiaOnyama Limba QUALIFIED
Salvatore StockhamIndiaAsiya Javayant UNQUALIFIED
Darci PoquetteFranceOnyama Limba UNQUALIFIED
Sinclair WaycottIndiaOnyama Limba PROPOSAL
Aika InouyeRussiaStephen Shaw NEW
Misaki RoysterCanadaAmy Elsner RENEWAL
Stacey MacleadUnited KingdomIoni Bowcher NEGOTIATION
Darci PoquetteAustraliaIoni Bowcher PROPOSAL
Greenwood BologniaBrazilIvan Magalhaes UNQUALIFIED
Darci PoquetteSpainOnyama Limba QUALIFIED
Maisha RulapaughSpainElwin Sharvill QUALIFIED
Isabel BowleyUnited KingdomOnyama Limba NEGOTIATION
Claire TollnerCanadaStephen Shaw UNQUALIFIED
James ButtBrazilAmy Elsner PROPOSAL
Morrow RutaIndiaOnyama Limba PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Mayumi KolmetzRussiaOnyama Limba QUALIFIED
Jennifer AmigonCanadaAmy Elsner UNQUALIFIED
Leon OldroydArgentinaAnna Fali QUALIFIED
Ivar PaprockiSpainAsiya Javayant PROPOSAL
Silvio SlusarskiRussiaOnyama Limba UNQUALIFIED
Munro FerenczJapanElwin Sharvill UNQUALIFIED
Arvin AlbaresArgentinaIvan Magalhaes RENEWAL
David DarakjyFranceOnyama Limba PROPOSAL
Misaki RoysterBrazilElwin Sharvill NEGOTIATION
Darci PoquetteBrazilIvan Magalhaes NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Silvio SlusarskiCanada2026-04-21King, Christopher A Esq NEGOTIATION7Ivan Magalhaes
1001Jennifer AmigonFrance2026-05-02Chanay, Jeffrey A Esq PROPOSAL7Stephen Shaw
1002Rodrigues CampainItaly2026-04-12King, Christopher A Esq PROPOSAL43Ivan Magalhaes
1003Maisha RulapaughFrance2026-04-24Chapman, Ross E Esq NEW2Anna Fali
1004Greenwood BologniaGermany2026-04-13Truhlar And Truhlar Attys NEGOTIATION35Amy Elsner
1005Jeanfrancois VenereBrazil2026-04-20Rousseaux, Michael Esq PROPOSAL98Asiya Javayant
1006Juan WieserGermany2026-05-02Buckley Miller Wright NEW96Ivan Magalhaes
1007Sinclair WaycottRussia2026-05-03Commercial Press QUALIFIED85Amy Elsner
1008Francesco ShinkoFrance2026-04-12Feltz Printing Service UNQUALIFIED76Xuxue Feng
1009James ButtGermany2026-04-13Dorl, James J Esq NEGOTIATION11Ivan Magalhaes
1010Misaki RoysterAustralia2026-05-05Buckley Miller Wright RENEWAL54Xuxue Feng
1011Silvio SlusarskiSpain2026-05-01Rousseaux, Michael Esq NEGOTIATION54Amy Elsner
1012Mujtaba NickaIndia2026-05-07Rousseaux, Michael Esq UNQUALIFIED71Elwin Sharvill
1013Johnson SergiUnited Kingdom2026-05-09Chemel, James L Cpa NEGOTIATION9Ivan Magalhaes
1014Emily WhobreyBrazil2026-05-08Chanay, Jeffrey A Esq UNQUALIFIED57Anna Fali
1015Aditya KuskoGermany2026-04-15Chapman, Ross E Esq PROPOSAL21Elwin Sharvill
1016Arvin AlbaresFrance2026-04-12Benton, John B Jr RENEWAL17Bernardo Dominic
1017Cody SaylorsSpain2026-04-15Feltz Printing Service RENEWAL93Amy Elsner
1018Aruna FigeroaFrance2026-04-15Feltz Printing Service NEW29Onyama Limba
1019Aika InouyeAustralia2026-04-18Feiner Bros QUALIFIED15Onyama Limba
1020Jennifer AmigonSpain2026-04-19Dorl, James J Esq NEW16Elwin Sharvill
1021Jeanfrancois VenereRussia2026-04-21Truhlar And Truhlar Attys QUALIFIED50Onyama Limba
1022Maria MarrierFrance2026-05-06Benton, John B Jr RENEWAL99Amy Elsner
1023Mayumi KolmetzCanada2026-04-28Benton, John B Jr QUALIFIED67Asiya Javayant
1024Arvin AlbaresArgentina2026-04-13Chapman, Ross E Esq NEGOTIATION58Ivan Magalhaes
1025Maisha RulapaughBrazil2026-04-28Chanay, Jeffrey A Esq NEW60Amy Elsner
1026Aditya KuskoUnited Kingdom2026-04-29Chemel, James L Cpa PROPOSAL68Onyama Limba
1027Aditya KuskoItaly2026-05-11Rangoni Of Florence UNQUALIFIED98Stephen Shaw
1028Misaki RoysterFrance2026-04-20King, Christopher A Esq RENEWAL76Ioni Bowcher
1029Jennifer AmigonCanada2026-05-09Printing Dimensions PROPOSAL43Anna Fali
1030Smith GlickAustralia2026-04-14Chemel, James L Cpa NEGOTIATION29Amy Elsner
1031Darci PoquetteCanada2026-05-11Rangoni Of Florence NEGOTIATION79Xuxue Feng
1032Aika InouyeRussia2026-05-06Feiner Bros RENEWAL89Elwin Sharvill
1033Clifford RimJapan2026-04-20Feltz Printing Service QUALIFIED4Bernardo Dominic
1034Cody SaylorsCanada2026-04-18Benton, John B Jr RENEWAL49Xuxue Feng
1035Mayumi KolmetzGermany2026-05-01Printing Dimensions NEGOTIATION12Ioni Bowcher
1036Ashley DoeIndia2026-04-19Commercial Press UNQUALIFIED89Elwin Sharvill
1037Maria MarrierFrance2026-05-06Chemel, James L Cpa PROPOSAL18Elwin Sharvill
1038Ricardo GauchoItaly2026-04-13Chanay, Jeffrey A Esq QUALIFIED43Ioni Bowcher
1039Julie StensethSpain2026-04-25Chanay, Jeffrey A Esq RENEWAL69Ivan Magalhaes
1040Stacey MacleadAustralia2026-04-22Chanay, Jeffrey A Esq QUALIFIED79Amy Elsner
1041Mujtaba NickaIndia2026-04-26Commercial Press UNQUALIFIED84Anna Fali
1042Jones VocelkaSpain2026-05-02Morlong Associates QUALIFIED83Ivan Magalhaes
1043Juan WieserCanada2026-05-11Morlong Associates PROPOSAL1Stephen Shaw
1044Tony FollerAustralia2026-05-02Rousseaux, Michael Esq PROPOSAL40Ivan Magalhaes
1045Aditya KuskoFrance2026-04-21Rangoni Of Florence NEW38Stephen Shaw
1046Leja CaldareraItaly2026-05-03Printing Dimensions PROPOSAL21Onyama Limba
1047Jefferson SchemmerBrazil2026-04-19Chemel, James L Cpa QUALIFIED53Anna Fali
1048Smith GlickRussia2026-04-30Printing Dimensions QUALIFIED52Onyama Limba
1049Ivar PaprockiJapan2026-05-05Benton, John B Jr PROPOSAL66Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Isabel BowleyBrazilXuxue Feng UNQUALIFIED
Claire TollnerIndiaStephen Shaw QUALIFIED
Mayumi KolmetzItalyAnna Fali RENEWAL
Maisha RulapaughSpainIoni Bowcher RENEWAL
Adams MorascaItalyElwin Sharvill PROPOSAL
Emily WhobreyBrazilIvan Magalhaes UNQUALIFIED
Mayumi KolmetzItalyOnyama Limba NEGOTIATION
Mayumi KolmetzAustraliaIvan Magalhaes NEGOTIATION
Silvio SlusarskiRussiaStephen Shaw RENEWAL
Ivar PaprockiJapanIoni Bowcher PROPOSAL
Jones VocelkaCanadaIvan Magalhaes RENEWAL
Costa DilliardJapanAmy Elsner NEGOTIATION
Francesco ShinkoFranceAnna Fali NEW
Claire TollnerJapanOnyama Limba PROPOSAL
Nicolas IturbideFranceElwin Sharvill NEW
Claire TollnerBrazilAmy Elsner QUALIFIED
Antonio CaudyJapanXuxue Feng RENEWAL
Isabel BowleyUnited KingdomOnyama Limba QUALIFIED
Adams MorascaRussiaAnna Fali PROPOSAL
Jeanfrancois VenereItalyBernardo Dominic UNQUALIFIED
Julie StensethIndiaAmy Elsner RENEWAL
James ButtJapanXuxue Feng NEW
Ricardo GauchoSpainStephen Shaw UNQUALIFIED
Munro FerenczAustraliaElwin Sharvill PROPOSAL
Claire TollnerRussiaAmy Elsner QUALIFIED
Greenwood BologniaRussiaBernardo Dominic RENEWAL
Munro FerenczIndiaAsiya Javayant RENEWAL
Maisha RulapaughUnited KingdomBernardo Dominic UNQUALIFIED
Salvatore StockhamBrazilElwin Sharvill NEW
Mayumi KolmetzJapanAnna Fali NEW
Rodrigues CampainIndiaBernardo Dominic NEW
David DarakjyAustraliaIvan Magalhaes NEGOTIATION
Ashley DoeIndiaXuxue Feng PROPOSAL
Wickens NestleJapanXuxue Feng NEGOTIATION
Antonio CaudyArgentinaElwin Sharvill NEGOTIATION
Jennifer AmigonRussiaElwin Sharvill QUALIFIED
Salvatore StockhamArgentinaOnyama Limba NEW
Greenwood BologniaRussiaXuxue Feng PROPOSAL
Smith GlickRussiaElwin Sharvill UNQUALIFIED
Mayumi KolmetzRussiaXuxue Feng NEGOTIATION
Salvatore StockhamRussiaAmy Elsner NEW
Leon OldroydArgentinaXuxue Feng NEW
Leja CaldareraItalyAnna Fali RENEWAL
Ashley DoeIndiaIvan Magalhaes RENEWAL
Isabel BowleyItalyElwin Sharvill NEGOTIATION
Antonio CaudyArgentinaAnna Fali RENEWAL
Claire TollnerAustraliaOnyama Limba NEGOTIATION
Faith GillianJapanAsiya Javayant UNQUALIFIED
Isabel BowleyUnited KingdomIvan Magalhaes UNQUALIFIED
Mayumi KolmetzSpainXuxue Feng NEGOTIATION
Frozen Columns
Name
Kaitlin Ostrosky
Octavia Malet
Leon Oldroyd
Claire Tollner
Julie Stenseth
Maisha Rulapaugh
Rodrigues Campain
Johnson Sergi
Juan Wieser
Wickens Nestle
Stacey Maclead
Munro Ferencz
Sinclair Waycott
Stacey Maclead
Cody Saylors
Costa Dilliard
Deepesh Chui
Misaki Royster
Leja Caldarera
Juan Wieser
Leja Caldarera
Julie Stenseth
Costa Dilliard
Munro Ferencz
Leja Caldarera
Misaki Royster
Cody Saylors
Clifford Rim
Deepesh Chui
Jones Vocelka
Murillo Malet
Rodrigues Campain
Morrow Ruta
Maisha Rulapaugh
Juan Wieser
Maria Marrier
Antonio Caudy
Nicolas Iturbide
Octavia Malet
Maria Marrier
Maria Marrier
Tony Foller
Ricardo Gaucho
Claire Tollner
Darci Poquette
Aruna Figeroa
Mayumi Kolmetz
Octavia Malet
Francesco Shinko
Silvio Slusarski
IdCountryDate
1000Germany2026-04-15
1001India2026-04-21
1002India2026-04-13
1003Russia2026-04-23
1004France2026-05-06
1005United Kingdom2026-04-23
1006Russia2026-04-24
1007France2026-04-25
1008Canada2026-05-03
1009United Kingdom2026-05-06
1010Japan2026-04-26
1011India2026-04-14
1012Japan2026-04-19
1013India2026-04-14
1014Canada2026-04-27
1015India2026-04-17
1016Argentina2026-05-03
1017Italy2026-04-29
1018India2026-05-07
1019Spain2026-04-15
1020Japan2026-04-30
1021Australia2026-04-19
1022Italy2026-05-05
1023Japan2026-04-17
1024Japan2026-04-21
1025Italy2026-05-02
1026Germany2026-05-10
1027United Kingdom2026-05-01
1028India2026-04-22
1029Spain2026-04-21
1030Spain2026-04-30
1031Australia2026-04-30
1032Japan2026-04-19
1033Japan2026-04-24
1034Australia2026-04-30
1035Brazil2026-04-25
1036India2026-05-06
1037Brazil2026-04-29
1038Germany2026-04-12
1039Italy2026-04-27
1040Brazil2026-05-11
1041Canada2026-04-22
1042Brazil2026-04-18
1043Australia2026-04-16
1044United Kingdom2026-05-11
1045Canada2026-04-24
1046Brazil2026-05-08
1047Spain2026-04-15
1048Canada2026-04-28
1049Germany2026-04-24

On-Demand Data

NameIdCountryDate
Salvatore Stockham1000France2026-05-02
Izzy Garufi1001United Kingdom2026-04-13
Kaitlin Ostrosky1002United Kingdom2026-04-13
Maisha Rulapaugh1003Canada2026-04-21
Jefferson Schemmer1004Italy2026-05-07
Francesco Shinko1005Italy2026-04-15
Smith Glick1006France2026-04-25
Aditya Kusko1007Argentina2026-04-12
Claire Tollner1008Russia2026-05-11
Adams Morasca1009Russia2026-04-20
Wickens Nestle1010Japan2026-04-20
Deepesh Chui1011United Kingdom2026-04-27
Wickens Nestle1012United Kingdom2026-04-29
Jennifer Amigon1013Brazil2026-04-28
Aditya Kusko1014Argentina2026-04-23
Aditya Kusko1015Russia2026-04-23
Octavia Malet1016Canada2026-04-16
Rodrigues Campain1017United Kingdom2026-04-26
Sinclair Waycott1018Japan2026-04-22
Jennifer Amigon1019Spain2026-04-29
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kaitlin OstroskyJapanAsiya Javayant UNQUALIFIED
Cody SaylorsUnited KingdomIvan Magalhaes NEGOTIATION
Munro FerenczBrazilIvan Magalhaes NEW
Isabel BowleyUnited KingdomBernardo Dominic PROPOSAL
Tony FollerFranceElwin Sharvill NEW
Izzy GarufiFranceElwin Sharvill UNQUALIFIED
Jones VocelkaIndiaAmy Elsner QUALIFIED
Ricardo GauchoSpainXuxue Feng NEW
Julie StensethCanadaStephen Shaw QUALIFIED
Leon OldroydJapanOnyama Limba NEGOTIATION
Kadeem FlosiRussiaXuxue Feng NEGOTIATION
Julie StensethRussiaElwin Sharvill NEGOTIATION
Jeanfrancois VenereIndiaAnna Fali NEW
Faith GillianItalyAsiya Javayant RENEWAL
Emily WhobreyAustraliaXuxue Feng NEW
Jennifer AmigonJapanIvan Magalhaes RENEWAL
Adams MorascaFranceIvan Magalhaes PROPOSAL
Morrow RutaIndiaIoni Bowcher QUALIFIED
Alejandro PerinAustraliaAmy Elsner RENEWAL
Jones VocelkaAustraliaAnna Fali UNQUALIFIED
Mayumi KolmetzGermanyIvan Magalhaes RENEWAL
Greenwood BologniaBrazilAnna Fali NEW
Sinclair WaycottUnited KingdomOnyama Limba RENEWAL
Chavez BriddickBrazilOnyama Limba QUALIFIED
Aika InouyeArgentinaXuxue Feng QUALIFIED
Leon OldroydBrazilOnyama Limba UNQUALIFIED
Isabel BowleyUnited KingdomOnyama Limba NEGOTIATION
Murillo MaletItalyXuxue Feng NEW
Deepesh ChuiRussiaAsiya Javayant QUALIFIED
Rodrigues CampainGermanyElwin Sharvill RENEWAL
Julie StensethRussiaElwin Sharvill NEGOTIATION
Salvatore StockhamItalyIoni Bowcher RENEWAL
Emily WhobreyBrazilAnna Fali NEW
Salvatore StockhamIndiaIvan Magalhaes NEGOTIATION
Leja CaldareraBrazilElwin Sharvill NEW
Mujtaba NickaItalyAsiya Javayant NEGOTIATION
David DarakjyArgentinaElwin Sharvill UNQUALIFIED
Misaki RoysterBrazilAmy Elsner RENEWAL
Emily WhobreyAustraliaIvan Magalhaes QUALIFIED
David DarakjyArgentinaAsiya Javayant 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>