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
Jeanfrancois VenereGermanyAsiya Javayant RENEWAL
Juan WieserIndiaIvan Magalhaes NEGOTIATION
Murillo MaletBrazilStephen Shaw NEGOTIATION
Jeanfrancois VenereCanadaXuxue Feng UNQUALIFIED
Stacey MacleadAustraliaAmy Elsner QUALIFIED
Aruna FigeroaRussiaElwin Sharvill PROPOSAL
Silvio SlusarskiCanadaAmy Elsner QUALIFIED
Aruna FigeroaItalyAmy Elsner PROPOSAL
Jeanfrancois VenereAustraliaAmy Elsner NEGOTIATION
Clifford RimIndiaAsiya Javayant NEW
Aditya KuskoArgentinaElwin Sharvill RENEWAL
Misaki RoysterGermanyIvan Magalhaes RENEWAL
Jeanfrancois VenereItalyAnna Fali PROPOSAL
Jefferson SchemmerSpainBernardo Dominic RENEWAL
Misaki RoysterAustraliaStephen Shaw PROPOSAL
Salvatore StockhamSpainStephen Shaw NEGOTIATION
Rodrigues CampainIndiaAnna Fali QUALIFIED
Jefferson SchemmerGermanyStephen Shaw PROPOSAL
Nicolas IturbideBrazilStephen Shaw RENEWAL
Kadeem FlosiGermanyStephen Shaw NEGOTIATION
Mayumi KolmetzFranceIoni Bowcher PROPOSAL
Ricardo GauchoCanadaOnyama Limba NEGOTIATION
Salvatore StockhamBrazilElwin Sharvill NEGOTIATION
Stacey MacleadRussiaStephen Shaw RENEWAL
Francesco ShinkoBrazilAmy Elsner NEW
Aditya KuskoIndiaElwin Sharvill QUALIFIED
Ashley DoeAustraliaOnyama Limba UNQUALIFIED
Salvatore StockhamGermanyOnyama Limba QUALIFIED
Ricardo GauchoJapanAsiya Javayant PROPOSAL
Julie StensethCanadaIvan Magalhaes RENEWAL
Greenwood BologniaIndiaAsiya Javayant QUALIFIED
Adams MorascaSpainStephen Shaw PROPOSAL
Silvio SlusarskiCanadaIvan Magalhaes UNQUALIFIED
Izzy GarufiIndiaStephen Shaw QUALIFIED
Francesco ShinkoCanadaBernardo Dominic NEGOTIATION
Darci PoquetteJapanAsiya Javayant PROPOSAL
Wickens NestleGermanyElwin Sharvill QUALIFIED
Jefferson SchemmerRussiaIvan Magalhaes QUALIFIED
Rodrigues CampainSpainAnna Fali QUALIFIED
Jefferson SchemmerItalyBernardo Dominic RENEWAL
Aika InouyeAustraliaXuxue Feng PROPOSAL
Jennifer AmigonAustraliaElwin Sharvill UNQUALIFIED
Munro FerenczJapanOnyama Limba PROPOSAL
Clifford RimUnited KingdomAsiya Javayant UNQUALIFIED
Francesco ShinkoAustraliaAnna Fali UNQUALIFIED
Julie StensethGermanyBernardo Dominic QUALIFIED
David DarakjyGermanyIoni Bowcher UNQUALIFIED
Munro FerenczBrazilBernardo Dominic QUALIFIED
Octavia MaletUnited KingdomOnyama Limba QUALIFIED
Julie StensethSpainOnyama Limba PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Mujtaba NickaRussiaAnna Fali QUALIFIED
Ivar PaprockiItalyIvan Magalhaes UNQUALIFIED
Aruna FigeroaCanadaIvan Magalhaes PROPOSAL
Wickens NestleFranceAmy Elsner NEW
Jennifer AmigonBrazilIvan Magalhaes RENEWAL
Alejandro PerinIndiaXuxue Feng RENEWAL
Leja CaldareraBrazilOnyama Limba UNQUALIFIED
Ricardo GauchoArgentinaOnyama Limba NEW
James ButtGermanyXuxue Feng QUALIFIED
Costa DilliardSpainAsiya Javayant NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Johnson SergiArgentina2026-05-26Morlong Associates NEW86Xuxue Feng
1001Costa DilliardAustralia2026-05-24King, Christopher A Esq RENEWAL70Onyama Limba
1002Aika InouyeBrazil2026-05-12Feltz Printing Service NEW36Bernardo Dominic
1003Adams MorascaCanada2026-05-23Truhlar And Truhlar Attys NEW47Anna Fali
1004Rodrigues CampainIndia2026-05-28Benton, John B Jr RENEWAL79Ioni Bowcher
1005Aika InouyeBrazil2026-05-24Feiner Bros RENEWAL66Xuxue Feng
1006Jeanfrancois VenereUnited Kingdom2026-05-21Rousseaux, Michael Esq NEGOTIATION63Onyama Limba
1007Alejandro PerinArgentina2026-05-23Printing Dimensions NEW61Xuxue Feng
1008Munro FerenczFrance2026-05-14Chanay, Jeffrey A Esq RENEWAL80Amy Elsner
1009Jones VocelkaArgentina2026-05-17Printing Dimensions NEW52Xuxue Feng
1010Kaitlin OstroskyCanada2026-05-27Morlong Associates QUALIFIED9Elwin Sharvill
1011Arvin AlbaresJapan2026-06-09Printing Dimensions UNQUALIFIED62Ivan Magalhaes
1012Mayumi KolmetzIndia2026-05-24Chanay, Jeffrey A Esq UNQUALIFIED17Ioni Bowcher
1013Jones VocelkaJapan2026-05-17Rousseaux, Michael Esq PROPOSAL48Ivan Magalhaes
1014Claire TollnerItaly2026-05-25Dorl, James J Esq QUALIFIED83Asiya Javayant
1015Cody SaylorsCanada2026-05-25Buckley Miller Wright QUALIFIED32Asiya Javayant
1016Leon OldroydBrazil2026-05-15Commercial Press PROPOSAL57Amy Elsner
1017Maria MarrierUnited Kingdom2026-05-17Morlong Associates PROPOSAL77Onyama Limba
1018James ButtSpain2026-05-14Rousseaux, Michael Esq NEW28Bernardo Dominic
1019Mujtaba NickaUnited Kingdom2026-05-25Chemel, James L Cpa NEGOTIATION16Ioni Bowcher
1020Mayumi KolmetzBrazil2026-05-11Benton, John B Jr NEW22Ivan Magalhaes
1021Johnson SergiBrazil2026-05-21King, Christopher A Esq PROPOSAL60Amy Elsner
1022Leon OldroydCanada2026-06-04Chanay, Jeffrey A Esq NEW75Asiya Javayant
1023Emily WhobreyAustralia2026-05-29Benton, John B Jr QUALIFIED71Anna Fali
1024Ashley DoeFrance2026-05-19Feltz Printing Service NEGOTIATION86Stephen Shaw
1025James ButtGermany2026-05-11Dorl, James J Esq UNQUALIFIED59Elwin Sharvill
1026Mayumi KolmetzIndia2026-06-05Commercial Press PROPOSAL49Ioni Bowcher
1027David DarakjyIndia2026-05-12Dorl, James J Esq NEW50Onyama Limba
1028Julie StensethFrance2026-05-25Chemel, James L Cpa RENEWAL9Elwin Sharvill
1029Clifford RimSpain2026-06-08Morlong Associates NEW51Stephen Shaw
1030Nicolas IturbideRussia2026-06-01Morlong Associates UNQUALIFIED60Stephen Shaw
1031Greenwood BologniaRussia2026-05-16Benton, John B Jr NEGOTIATION21Ivan Magalhaes
1032James ButtItaly2026-06-04Morlong Associates NEGOTIATION93Ivan Magalhaes
1033Octavia MaletItaly2026-06-09Dorl, James J Esq QUALIFIED29Xuxue Feng
1034Costa DilliardFrance2026-05-15Chemel, James L Cpa NEW91Amy Elsner
1035Isabel BowleyJapan2026-05-28Morlong Associates QUALIFIED2Asiya Javayant
1036David DarakjyUnited Kingdom2026-05-23Rousseaux, Michael Esq NEW93Elwin Sharvill
1037Faith GillianCanada2026-05-15Dorl, James J Esq NEGOTIATION66Ioni Bowcher
1038Aditya KuskoItaly2026-06-05Printing Dimensions UNQUALIFIED85Stephen Shaw
1039Jefferson SchemmerUnited Kingdom2026-05-16Buckley Miller Wright UNQUALIFIED45Bernardo Dominic
1040Claire TollnerUnited Kingdom2026-05-25Chapman, Ross E Esq QUALIFIED12Asiya Javayant
1041Izzy GarufiUnited Kingdom2026-06-09Morlong Associates RENEWAL5Amy Elsner
1042Kadeem FlosiArgentina2026-05-14Chanay, Jeffrey A Esq RENEWAL89Bernardo Dominic
1043Nicolas IturbideJapan2026-06-05Benton, John B Jr RENEWAL60Amy Elsner
1044Juan WieserFrance2026-05-11Feltz Printing Service PROPOSAL97Onyama Limba
1045Nicolas IturbideJapan2026-05-30Buckley Miller Wright RENEWAL54Onyama Limba
1046David DarakjyUnited Kingdom2026-05-13Buckley Miller Wright RENEWAL56Asiya Javayant
1047Arvin AlbaresItaly2026-05-30Benton, John B Jr PROPOSAL8Amy Elsner
1048Faith GillianIndia2026-06-05Truhlar And Truhlar Attys UNQUALIFIED15Elwin Sharvill
1049Leon OldroydArgentina2026-06-06Rangoni Of Florence NEW31Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Kadeem FlosiGermanyStephen Shaw NEGOTIATION
Morrow RutaUnited KingdomAmy Elsner RENEWAL
Silvio SlusarskiRussiaAsiya Javayant RENEWAL
Francesco ShinkoUnited KingdomAmy Elsner QUALIFIED
James ButtArgentinaOnyama Limba PROPOSAL
Costa DilliardUnited KingdomBernardo Dominic UNQUALIFIED
Juan WieserGermanyIoni Bowcher NEGOTIATION
Kaitlin OstroskyBrazilAmy Elsner PROPOSAL
Chavez BriddickUnited KingdomIoni Bowcher PROPOSAL
Francesco ShinkoCanadaAmy Elsner NEGOTIATION
Rodrigues CampainAustraliaXuxue Feng RENEWAL
Isabel BowleyIndiaOnyama Limba NEW
Adams MorascaIndiaAnna Fali NEW
Costa DilliardCanadaAsiya Javayant PROPOSAL
Wickens NestleSpainAmy Elsner RENEWAL
Johnson SergiBrazilStephen Shaw UNQUALIFIED
Alejandro PerinBrazilAmy Elsner NEGOTIATION
Greenwood BologniaSpainElwin Sharvill QUALIFIED
Jefferson SchemmerArgentinaIoni Bowcher UNQUALIFIED
Mujtaba NickaFranceOnyama Limba QUALIFIED
Nicolas IturbideCanadaXuxue Feng NEGOTIATION
Darci PoquetteRussiaIvan Magalhaes PROPOSAL
Antonio CaudyUnited KingdomXuxue Feng NEGOTIATION
Aditya KuskoSpainElwin Sharvill PROPOSAL
Mayumi KolmetzArgentinaElwin Sharvill PROPOSAL
Sinclair WaycottItalyBernardo Dominic UNQUALIFIED
Jones VocelkaUnited KingdomIoni Bowcher QUALIFIED
Johnson SergiUnited KingdomXuxue Feng NEW
Costa DilliardIndiaBernardo Dominic PROPOSAL
Deepesh ChuiItalyAsiya Javayant PROPOSAL
Antonio CaudyItalyAsiya Javayant NEGOTIATION
Kaitlin OstroskySpainAsiya Javayant RENEWAL
Jefferson SchemmerArgentinaStephen Shaw NEGOTIATION
Munro FerenczSpainOnyama Limba NEGOTIATION
Rodrigues CampainJapanIvan Magalhaes NEGOTIATION
Rodrigues CampainAustraliaAnna Fali QUALIFIED
Costa DilliardIndiaStephen Shaw PROPOSAL
Aruna FigeroaIndiaStephen Shaw UNQUALIFIED
Kadeem FlosiArgentinaXuxue Feng NEW
Costa DilliardSpainElwin Sharvill RENEWAL
Chavez BriddickSpainStephen Shaw NEW
Leja CaldareraRussiaOnyama Limba QUALIFIED
Jennifer AmigonFranceAmy Elsner QUALIFIED
Ashley DoeCanadaBernardo Dominic NEGOTIATION
Costa DilliardIndiaIoni Bowcher UNQUALIFIED
Alejandro PerinJapanBernardo Dominic PROPOSAL
Maisha RulapaughIndiaBernardo Dominic RENEWAL
Juan WieserRussiaElwin Sharvill PROPOSAL
Ivar PaprockiRussiaIoni Bowcher RENEWAL
Stacey MacleadCanadaAsiya Javayant QUALIFIED
Frozen Columns
Name
Ashley Doe
Jefferson Schemmer
Morrow Ruta
Antonio Caudy
Leon Oldroyd
Salvatore Stockham
Deepesh Chui
Johnson Sergi
Mayumi Kolmetz
Octavia Malet
Ivar Paprocki
Mayumi Kolmetz
Aruna Figeroa
Cody Saylors
Chavez Briddick
Leja Caldarera
Arvin Albares
Morrow Ruta
Aruna Figeroa
Rodrigues Campain
Maria Marrier
Darci Poquette
Isabel Bowley
Mujtaba Nicka
Adams Morasca
Antonio Caudy
Claire Tollner
Maria Marrier
Clifford Rim
Julie Stenseth
Salvatore Stockham
Jefferson Schemmer
Nicolas Iturbide
Kadeem Flosi
Cody Saylors
Munro Ferencz
Isabel Bowley
Jennifer Amigon
Emily Whobrey
Kaitlin Ostrosky
Maria Marrier
Greenwood Bolognia
Alejandro Perin
Kadeem Flosi
Antonio Caudy
Misaki Royster
Ricardo Gaucho
Misaki Royster
Alejandro Perin
Morrow Ruta
IdCountryDate
1000Russia2026-05-11
1001Australia2026-05-17
1002Spain2026-05-24
1003Spain2026-06-07
1004Australia2026-05-29
1005Russia2026-05-11
1006Spain2026-06-06
1007Spain2026-06-03
1008India2026-05-18
1009Canada2026-05-29
1010Italy2026-06-03
1011Brazil2026-05-15
1012France2026-05-18
1013Argentina2026-05-20
1014France2026-05-24
1015United Kingdom2026-05-20
1016Argentina2026-05-22
1017Brazil2026-05-16
1018United Kingdom2026-05-29
1019Brazil2026-06-01
1020United Kingdom2026-06-01
1021Germany2026-06-03
1022Australia2026-05-18
1023Japan2026-05-31
1024India2026-05-11
1025Brazil2026-05-27
1026Japan2026-05-21
1027Spain2026-06-07
1028Canada2026-06-03
1029Argentina2026-05-22
1030United Kingdom2026-05-26
1031Australia2026-05-26
1032Japan2026-05-23
1033Spain2026-05-28
1034Argentina2026-05-19
1035Russia2026-06-01
1036Australia2026-06-01
1037France2026-06-06
1038United Kingdom2026-05-12
1039Spain2026-05-24
1040Australia2026-06-03
1041India2026-06-07
1042India2026-06-03
1043Spain2026-05-17
1044France2026-05-29
1045Australia2026-06-01
1046United Kingdom2026-06-06
1047United Kingdom2026-06-04
1048Japan2026-06-01
1049India2026-06-07

On-Demand Data

NameIdCountryDate
Clifford Rim1000Italy2026-06-05
Alejandro Perin1001France2026-06-03
Claire Tollner1002Spain2026-05-30
Isabel Bowley1003Argentina2026-06-07
Juan Wieser1004Spain2026-05-11
Mujtaba Nicka1005Canada2026-06-07
Stacey Maclead1006Argentina2026-05-22
Clifford Rim1007India2026-06-04
Murillo Malet1008Japan2026-06-05
Faith Gillian1009United Kingdom2026-05-27
Ricardo Gaucho1010Italy2026-05-28
Alejandro Perin1011Russia2026-05-14
Isabel Bowley1012Australia2026-05-25
Jones Vocelka1013Canada2026-05-22
Ivar Paprocki1014Italy2026-06-08
Isabel Bowley1015India2026-06-02
Salvatore Stockham1016India2026-06-06
Mujtaba Nicka1017France2026-05-27
Antonio Caudy1018Brazil2026-06-09
Nicolas Iturbide1019Canada2026-06-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Francesco ShinkoArgentinaIoni Bowcher QUALIFIED
Jennifer AmigonArgentinaStephen Shaw NEGOTIATION
Octavia MaletFranceOnyama Limba PROPOSAL
Octavia MaletSpainAmy Elsner NEGOTIATION
Juan WieserArgentinaOnyama Limba RENEWAL
Munro FerenczAustraliaStephen Shaw UNQUALIFIED
Leon OldroydFranceIvan Magalhaes RENEWAL
Darci PoquetteItalyAsiya Javayant NEW
Arvin AlbaresArgentinaStephen Shaw PROPOSAL
Stacey MacleadIndiaAsiya Javayant PROPOSAL
Mujtaba NickaAustraliaAmy Elsner NEW
Jones VocelkaBrazilXuxue Feng NEGOTIATION
Jones VocelkaAustraliaElwin Sharvill NEGOTIATION
Francesco ShinkoItalyOnyama Limba UNQUALIFIED
Stacey MacleadRussiaIvan Magalhaes NEGOTIATION
Ashley DoeJapanAsiya Javayant RENEWAL
Octavia MaletAustraliaStephen Shaw PROPOSAL
Faith GillianFranceXuxue Feng NEGOTIATION
Ashley DoeFranceXuxue Feng PROPOSAL
Jeanfrancois VenereJapanAnna Fali NEW
Chavez BriddickFranceAnna Fali NEGOTIATION
Leon OldroydBrazilAsiya Javayant QUALIFIED
Silvio SlusarskiCanadaXuxue Feng PROPOSAL
Antonio CaudyFranceOnyama Limba QUALIFIED
James ButtItalyIoni Bowcher QUALIFIED
Octavia MaletJapanXuxue Feng PROPOSAL
Jones VocelkaJapanAnna Fali NEGOTIATION
Aruna FigeroaBrazilIoni Bowcher QUALIFIED
Jeanfrancois VenereIndiaStephen Shaw RENEWAL
Mujtaba NickaBrazilBernardo Dominic NEW
Maisha RulapaughFranceXuxue Feng QUALIFIED
Johnson SergiAustraliaBernardo Dominic PROPOSAL
James ButtIndiaIvan Magalhaes UNQUALIFIED
Sinclair WaycottJapanStephen Shaw NEGOTIATION
Deepesh ChuiCanadaAsiya Javayant UNQUALIFIED
Mayumi KolmetzArgentinaIvan Magalhaes NEGOTIATION
Aika InouyeJapanAnna Fali QUALIFIED
Stacey MacleadBrazilIoni Bowcher NEGOTIATION
David DarakjyCanadaXuxue Feng NEGOTIATION
Greenwood BologniaArgentinaAsiya Javayant 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>