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
Julie StensethGermanyAsiya Javayant QUALIFIED
Jones VocelkaBrazilStephen Shaw UNQUALIFIED
Jennifer AmigonFranceAmy Elsner RENEWAL
Ashley DoeJapanAnna Fali NEW
David DarakjySpainAmy Elsner UNQUALIFIED
Leon OldroydIndiaAnna Fali UNQUALIFIED
Nicolas IturbideIndiaAnna Fali NEGOTIATION
Jefferson SchemmerFranceBernardo Dominic UNQUALIFIED
Misaki RoysterRussiaIoni Bowcher RENEWAL
Alejandro PerinGermanyAsiya Javayant NEW
Darci PoquetteRussiaXuxue Feng QUALIFIED
Octavia MaletArgentinaOnyama Limba UNQUALIFIED
Maisha RulapaughCanadaIoni Bowcher QUALIFIED
Jeanfrancois VenereJapanBernardo Dominic PROPOSAL
Wickens NestleSpainAsiya Javayant NEGOTIATION
Maisha RulapaughSpainOnyama Limba QUALIFIED
Aruna FigeroaUnited KingdomXuxue Feng PROPOSAL
Mayumi KolmetzJapanXuxue Feng PROPOSAL
Costa DilliardFranceXuxue Feng RENEWAL
Salvatore StockhamJapanOnyama Limba RENEWAL
Francesco ShinkoIndiaBernardo Dominic NEGOTIATION
Ashley DoeIndiaBernardo Dominic QUALIFIED
Sinclair WaycottArgentinaIoni Bowcher PROPOSAL
James ButtSpainAsiya Javayant NEGOTIATION
Greenwood BologniaIndiaStephen Shaw NEGOTIATION
Izzy GarufiBrazilElwin Sharvill NEGOTIATION
Tony FollerArgentinaStephen Shaw QUALIFIED
Sinclair WaycottAustraliaAnna Fali RENEWAL
Ivar PaprockiItalyAnna Fali UNQUALIFIED
Murillo MaletGermanyAnna Fali UNQUALIFIED
Rodrigues CampainGermanyAmy Elsner PROPOSAL
Mujtaba NickaCanadaStephen Shaw QUALIFIED
Munro FerenczArgentinaIoni Bowcher UNQUALIFIED
Emily WhobreyBrazilAsiya Javayant NEGOTIATION
Julie StensethAustraliaAnna Fali NEW
Chavez BriddickCanadaOnyama Limba UNQUALIFIED
Francesco ShinkoFranceIvan Magalhaes RENEWAL
Aditya KuskoBrazilAsiya Javayant QUALIFIED
Ivar PaprockiAustraliaStephen Shaw PROPOSAL
Chavez BriddickGermanyElwin Sharvill PROPOSAL
Costa DilliardGermanyElwin Sharvill RENEWAL
Leon OldroydIndiaIoni Bowcher UNQUALIFIED
Ricardo GauchoRussiaAnna Fali NEGOTIATION
Clifford RimBrazilStephen Shaw PROPOSAL
Nicolas IturbideCanadaBernardo Dominic UNQUALIFIED
Misaki RoysterItalyBernardo Dominic NEW
Mayumi KolmetzSpainAsiya Javayant QUALIFIED
Costa DilliardSpainIvan Magalhaes QUALIFIED
David DarakjyJapanAsiya Javayant PROPOSAL
Aruna FigeroaArgentinaAmy Elsner PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Ricardo GauchoFranceBernardo Dominic PROPOSAL
Tony FollerJapanIvan Magalhaes NEGOTIATION
Leja CaldareraCanadaIoni Bowcher UNQUALIFIED
Octavia MaletFranceBernardo Dominic RENEWAL
Jefferson SchemmerFranceXuxue Feng NEW
Silvio SlusarskiRussiaAmy Elsner NEGOTIATION
Mayumi KolmetzGermanyAsiya Javayant NEW
Aika InouyeIndiaOnyama Limba UNQUALIFIED
Emily WhobreyUnited KingdomAnna Fali NEGOTIATION
Cody SaylorsUnited KingdomStephen Shaw PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Tony FollerUnited Kingdom2026-05-24King, Christopher A Esq UNQUALIFIED50Amy Elsner
1001Tony FollerBrazil2026-06-12Morlong Associates NEGOTIATION7Asiya Javayant
1002Silvio SlusarskiAustralia2026-05-24Feiner Bros NEW84Elwin Sharvill
1003Aruna FigeroaAustralia2026-05-29Printing Dimensions NEGOTIATION77Bernardo Dominic
1004Claire TollnerRussia2026-06-08Feiner Bros PROPOSAL50Bernardo Dominic
1005Juan WieserItaly2026-06-09Rangoni Of Florence NEGOTIATION77Asiya Javayant
1006Smith GlickArgentina2026-05-22Chapman, Ross E Esq RENEWAL20Xuxue Feng
1007Munro FerenczCanada2026-06-13Printing Dimensions NEW67Asiya Javayant
1008Jefferson SchemmerCanada2026-06-12Commercial Press UNQUALIFIED87Ivan Magalhaes
1009Clifford RimIndia2026-06-01Feltz Printing Service QUALIFIED89Asiya Javayant
1010Murillo MaletUnited Kingdom2026-05-22Dorl, James J Esq UNQUALIFIED34Bernardo Dominic
1011Clifford RimCanada2026-06-12Truhlar And Truhlar Attys QUALIFIED71Amy Elsner
1012Octavia MaletAustralia2026-06-16Chanay, Jeffrey A Esq UNQUALIFIED21Xuxue Feng
1013Octavia MaletIndia2026-06-03Commercial Press NEGOTIATION44Elwin Sharvill
1014Leon OldroydBrazil2026-06-02Feltz Printing Service PROPOSAL82Asiya Javayant
1015Julie StensethAustralia2026-06-08Feiner Bros UNQUALIFIED24Amy Elsner
1016Izzy GarufiRussia2026-06-05Buckley Miller Wright QUALIFIED1Elwin Sharvill
1017Costa DilliardCanada2026-05-18Rousseaux, Michael Esq UNQUALIFIED59Onyama Limba
1018Rodrigues CampainIndia2026-05-22Rangoni Of Florence PROPOSAL78Elwin Sharvill
1019Misaki RoysterRussia2026-05-31Rousseaux, Michael Esq PROPOSAL30Elwin Sharvill
1020Smith GlickUnited Kingdom2026-05-25Feltz Printing Service PROPOSAL2Ivan Magalhaes
1021David DarakjyIndia2026-06-14Chemel, James L Cpa RENEWAL71Onyama Limba
1022Johnson SergiArgentina2026-06-09Rousseaux, Michael Esq NEGOTIATION49Elwin Sharvill
1023Arvin AlbaresAustralia2026-06-10Chapman, Ross E Esq QUALIFIED43Stephen Shaw
1024Alejandro PerinUnited Kingdom2026-05-28Feiner Bros PROPOSAL27Anna Fali
1025Claire TollnerArgentina2026-05-30Feiner Bros NEGOTIATION95Stephen Shaw
1026Maisha RulapaughSpain2026-05-31Buckley Miller Wright UNQUALIFIED3Onyama Limba
1027Clifford RimUnited Kingdom2026-05-30Feltz Printing Service UNQUALIFIED30Elwin Sharvill
1028Costa DilliardArgentina2026-05-31Rangoni Of Florence NEGOTIATION68Onyama Limba
1029Ashley DoeJapan2026-05-28Buckley Miller Wright PROPOSAL61Asiya Javayant
1030Octavia MaletBrazil2026-05-19Chemel, James L Cpa UNQUALIFIED27Stephen Shaw
1031Adams MorascaUnited Kingdom2026-05-27King, Christopher A Esq PROPOSAL48Bernardo Dominic
1032David DarakjyArgentina2026-06-08Chapman, Ross E Esq PROPOSAL99Anna Fali
1033Aditya KuskoBrazil2026-06-10Feiner Bros QUALIFIED98Ivan Magalhaes
1034Darci PoquetteJapan2026-06-04Rangoni Of Florence PROPOSAL4Bernardo Dominic
1035Johnson SergiSpain2026-05-28Feltz Printing Service NEW6Ivan Magalhaes
1036Alejandro PerinAustralia2026-05-18Buckley Miller Wright QUALIFIED82Anna Fali
1037Leja CaldareraIndia2026-06-12Rangoni Of Florence NEGOTIATION47Ioni Bowcher
1038Mujtaba NickaSpain2026-06-12Commercial Press QUALIFIED92Asiya Javayant
1039Jeanfrancois VenereFrance2026-06-05Printing Dimensions NEGOTIATION99Xuxue Feng
1040Aika InouyeFrance2026-06-04Chapman, Ross E Esq RENEWAL68Ivan Magalhaes
1041Leja CaldareraItaly2026-06-06Commercial Press NEW38Xuxue Feng
1042Ivar PaprockiBrazil2026-06-15Commercial Press QUALIFIED91Ioni Bowcher
1043Maisha RulapaughUnited Kingdom2026-06-10Dorl, James J Esq NEW5Ivan Magalhaes
1044Munro FerenczBrazil2026-05-23Chemel, James L Cpa NEW24Stephen Shaw
1045Antonio CaudyCanada2026-06-15King, Christopher A Esq QUALIFIED77Elwin Sharvill
1046Munro FerenczItaly2026-06-01Chemel, James L Cpa QUALIFIED97Ivan Magalhaes
1047Greenwood BologniaRussia2026-06-15Benton, John B Jr QUALIFIED78Asiya Javayant
1048Leon OldroydBrazil2026-06-10Benton, John B Jr RENEWAL31Xuxue Feng
1049Deepesh ChuiIndia2026-06-06Chanay, Jeffrey A Esq NEW49Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Greenwood BologniaSpainAnna Fali NEGOTIATION
Stacey MacleadAustraliaStephen Shaw RENEWAL
Izzy GarufiGermanyAmy Elsner QUALIFIED
Wickens NestleAustraliaXuxue Feng QUALIFIED
Mujtaba NickaFranceAnna Fali NEW
Jennifer AmigonCanadaAmy Elsner QUALIFIED
Misaki RoysterJapanOnyama Limba PROPOSAL
Jeanfrancois VenereUnited KingdomXuxue Feng RENEWAL
Adams MorascaSpainStephen Shaw PROPOSAL
Mayumi KolmetzAustraliaElwin Sharvill NEGOTIATION
Mujtaba NickaBrazilStephen Shaw NEGOTIATION
Aruna FigeroaBrazilAmy Elsner NEGOTIATION
Nicolas IturbideItalyAsiya Javayant PROPOSAL
Maria MarrierSpainOnyama Limba PROPOSAL
Leon OldroydSpainOnyama Limba PROPOSAL
Leja CaldareraGermanyAmy Elsner UNQUALIFIED
Francesco ShinkoItalyOnyama Limba QUALIFIED
Jennifer AmigonUnited KingdomElwin Sharvill NEW
Silvio SlusarskiJapanStephen Shaw QUALIFIED
Murillo MaletCanadaElwin Sharvill QUALIFIED
James ButtJapanIoni Bowcher NEGOTIATION
Greenwood BologniaJapanOnyama Limba NEGOTIATION
Mujtaba NickaIndiaElwin Sharvill NEW
Adams MorascaJapanBernardo Dominic PROPOSAL
Aruna FigeroaAustraliaIvan Magalhaes QUALIFIED
Nicolas IturbideAustraliaAnna Fali PROPOSAL
Emily WhobreyIndiaAnna Fali NEGOTIATION
Stacey MacleadFranceAmy Elsner NEGOTIATION
Aruna FigeroaJapanIoni Bowcher UNQUALIFIED
Salvatore StockhamItalyOnyama Limba PROPOSAL
Leja CaldareraFranceElwin Sharvill UNQUALIFIED
Juan WieserItalyOnyama Limba PROPOSAL
Claire TollnerAustraliaAmy Elsner PROPOSAL
Faith GillianGermanyAsiya Javayant NEGOTIATION
Tony FollerAustraliaAnna Fali NEGOTIATION
Aika InouyeUnited KingdomIoni Bowcher NEGOTIATION
Kadeem FlosiItalyIoni Bowcher UNQUALIFIED
Greenwood BologniaArgentinaAmy Elsner RENEWAL
Stacey MacleadBrazilOnyama Limba UNQUALIFIED
Claire TollnerArgentinaAnna Fali UNQUALIFIED
Kaitlin OstroskyGermanyAsiya Javayant RENEWAL
Chavez BriddickRussiaOnyama Limba RENEWAL
Aditya KuskoRussiaAsiya Javayant NEGOTIATION
Ivar PaprockiBrazilAsiya Javayant NEW
Aditya KuskoAustraliaOnyama Limba QUALIFIED
Maria MarrierUnited KingdomAsiya Javayant QUALIFIED
Ricardo GauchoBrazilOnyama Limba QUALIFIED
Antonio CaudyCanadaXuxue Feng RENEWAL
Jeanfrancois VenereGermanyAmy Elsner NEGOTIATION
Julie StensethCanadaAnna Fali NEGOTIATION
Frozen Columns
Name
Costa Dilliard
Julie Stenseth
Jennifer Amigon
Leja Caldarera
Aruna Figeroa
Maria Marrier
Arvin Albares
Juan Wieser
Clifford Rim
Misaki Royster
Emily Whobrey
Aika Inouye
Ricardo Gaucho
Antonio Caudy
Tony Foller
Misaki Royster
Francesco Shinko
Alejandro Perin
David Darakjy
Silvio Slusarski
Morrow Ruta
Isabel Bowley
Ivar Paprocki
Wickens Nestle
Nicolas Iturbide
Kaitlin Ostrosky
Kadeem Flosi
Jefferson Schemmer
Jefferson Schemmer
Aruna Figeroa
Ashley Doe
Stacey Maclead
Faith Gillian
Maisha Rulapaugh
Ricardo Gaucho
Leja Caldarera
Leon Oldroyd
Murillo Malet
Aruna Figeroa
Murillo Malet
Maria Marrier
Maisha Rulapaugh
Leon Oldroyd
Octavia Malet
Mujtaba Nicka
Stacey Maclead
Octavia Malet
Ivar Paprocki
Nicolas Iturbide
Rodrigues Campain
IdCountryDate
1000Italy2026-05-18
1001Canada2026-05-23
1002India2026-06-11
1003Brazil2026-06-08
1004Italy2026-05-20
1005Japan2026-06-12
1006Russia2026-06-06
1007Spain2026-06-06
1008Australia2026-06-06
1009Spain2026-05-24
1010Japan2026-05-20
1011Brazil2026-05-26
1012Italy2026-05-28
1013Italy2026-06-05
1014Germany2026-05-19
1015Brazil2026-05-19
1016Germany2026-06-02
1017Japan2026-05-19
1018Spain2026-06-13
1019Brazil2026-06-12
1020India2026-06-11
1021Canada2026-05-25
1022Australia2026-06-02
1023Argentina2026-05-20
1024United Kingdom2026-06-15
1025Italy2026-06-15
1026United Kingdom2026-06-09
1027Canada2026-06-08
1028Germany2026-06-05
1029Australia2026-05-20
1030Italy2026-05-30
1031India2026-05-24
1032United Kingdom2026-05-26
1033Japan2026-05-27
1034Spain2026-05-20
1035Japan2026-06-10
1036Italy2026-05-24
1037France2026-06-04
1038India2026-05-21
1039France2026-06-01
1040United Kingdom2026-06-08
1041Russia2026-05-30
1042Russia2026-06-12
1043Spain2026-06-15
1044Germany2026-05-23
1045India2026-05-27
1046Italy2026-05-28
1047India2026-05-20
1048Russia2026-06-01
1049Spain2026-06-05

On-Demand Data

NameIdCountryDate
Juan Wieser1000Germany2026-06-16
Mayumi Kolmetz1001Canada2026-06-06
Clifford Rim1002United Kingdom2026-05-19
Antonio Caudy1003Spain2026-05-20
James Butt1004Japan2026-05-28
Silvio Slusarski1005Russia2026-05-29
Antonio Caudy1006Spain2026-06-14
Greenwood Bolognia1007Canada2026-05-24
Nicolas Iturbide1008Germany2026-06-07
Mujtaba Nicka1009Japan2026-06-07
Mayumi Kolmetz1010Russia2026-05-20
Stacey Maclead1011Australia2026-05-28
Misaki Royster1012Spain2026-06-10
Octavia Malet1013Argentina2026-06-09
Deepesh Chui1014Argentina2026-05-26
Kadeem Flosi1015France2026-05-31
Julie Stenseth1016Japan2026-06-08
Julie Stenseth1017Japan2026-05-20
Chavez Briddick1018Japan2026-05-29
Adams Morasca1019India2026-05-31
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Maria MarrierRussiaAmy Elsner NEW
Chavez BriddickIndiaAsiya Javayant RENEWAL
Morrow RutaItalyBernardo Dominic PROPOSAL
Salvatore StockhamArgentinaBernardo Dominic RENEWAL
Julie StensethAustraliaStephen Shaw NEW
Octavia MaletCanadaAnna Fali RENEWAL
Claire TollnerArgentinaBernardo Dominic QUALIFIED
Jefferson SchemmerFranceXuxue Feng NEGOTIATION
Francesco ShinkoAustraliaOnyama Limba RENEWAL
Misaki RoysterArgentinaXuxue Feng QUALIFIED
Maria MarrierBrazilIvan Magalhaes PROPOSAL
Ivar PaprockiBrazilStephen Shaw NEW
Murillo MaletIndiaOnyama Limba NEGOTIATION
Darci PoquetteSpainElwin Sharvill QUALIFIED
Mujtaba NickaRussiaIvan Magalhaes NEW
Ivar PaprockiBrazilElwin Sharvill UNQUALIFIED
Jeanfrancois VenereGermanyIoni Bowcher NEW
Sinclair WaycottRussiaBernardo Dominic PROPOSAL
Maisha RulapaughArgentinaStephen Shaw NEGOTIATION
Smith GlickIndiaAnna Fali NEW
James ButtItalyXuxue Feng RENEWAL
Jefferson SchemmerBrazilBernardo Dominic RENEWAL
Ricardo GauchoArgentinaAmy Elsner QUALIFIED
Emily WhobreyItalyOnyama Limba RENEWAL
Antonio CaudyJapanElwin Sharvill RENEWAL
Mujtaba NickaSpainIoni Bowcher QUALIFIED
Wickens NestleGermanyOnyama Limba QUALIFIED
David DarakjySpainXuxue Feng NEGOTIATION
Murillo MaletGermanyIoni Bowcher QUALIFIED
Adams MorascaFranceStephen Shaw UNQUALIFIED
Jones VocelkaItalyIvan Magalhaes NEW
Ivar PaprockiFranceAmy Elsner NEGOTIATION
Kaitlin OstroskyJapanIvan Magalhaes NEGOTIATION
Izzy GarufiAustraliaIoni Bowcher UNQUALIFIED
Wickens NestleFranceAnna Fali NEW
Johnson SergiAustraliaIvan Magalhaes NEW
Alejandro PerinGermanyOnyama Limba UNQUALIFIED
Maisha RulapaughUnited KingdomElwin Sharvill PROPOSAL
Claire TollnerIndiaAsiya Javayant UNQUALIFIED
Leja CaldareraFranceIoni Bowcher QUALIFIED

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