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
Emily WhobreySpainAnna Fali NEGOTIATION
Aika InouyeJapanAnna Fali PROPOSAL
Julie StensethRussiaElwin Sharvill NEGOTIATION
Clifford RimAustraliaAnna Fali UNQUALIFIED
Greenwood BologniaCanadaXuxue Feng QUALIFIED
Darci PoquetteCanadaIvan Magalhaes UNQUALIFIED
Faith GillianRussiaStephen Shaw RENEWAL
Sinclair WaycottGermanyAnna Fali NEW
Morrow RutaCanadaOnyama Limba NEGOTIATION
Stacey MacleadGermanyXuxue Feng NEW
Juan WieserBrazilOnyama Limba NEGOTIATION
Faith GillianJapanOnyama Limba QUALIFIED
Misaki RoysterGermanyAmy Elsner UNQUALIFIED
Nicolas IturbideGermanyElwin Sharvill QUALIFIED
Aditya KuskoArgentinaIvan Magalhaes PROPOSAL
Jeanfrancois VenereFranceIvan Magalhaes PROPOSAL
Aruna FigeroaFranceStephen Shaw NEGOTIATION
Leja CaldareraSpainElwin Sharvill PROPOSAL
Munro FerenczArgentinaStephen Shaw QUALIFIED
Deepesh ChuiGermanyXuxue Feng PROPOSAL
Octavia MaletItalyAmy Elsner UNQUALIFIED
Ricardo GauchoAustraliaIvan Magalhaes NEW
Arvin AlbaresGermanyIoni Bowcher RENEWAL
Emily WhobreyItalyStephen Shaw UNQUALIFIED
Jeanfrancois VenereAustraliaStephen Shaw QUALIFIED
Emily WhobreyFranceBernardo Dominic NEGOTIATION
Jones VocelkaArgentinaOnyama Limba NEW
Jefferson SchemmerCanadaXuxue Feng NEW
James ButtIndiaXuxue Feng UNQUALIFIED
James ButtArgentinaElwin Sharvill PROPOSAL
Rodrigues CampainArgentinaBernardo Dominic PROPOSAL
Cody SaylorsGermanyAnna Fali RENEWAL
Jefferson SchemmerAustraliaIvan Magalhaes QUALIFIED
Emily WhobreyItalyAnna Fali QUALIFIED
Silvio SlusarskiArgentinaStephen Shaw UNQUALIFIED
Rodrigues CampainJapanOnyama Limba RENEWAL
Aika InouyeAustraliaIvan Magalhaes NEGOTIATION
Jones VocelkaAustraliaOnyama Limba QUALIFIED
Leja CaldareraBrazilAsiya Javayant NEW
Murillo MaletRussiaBernardo Dominic NEW
Mayumi KolmetzBrazilIvan Magalhaes NEW
Darci PoquetteGermanyXuxue Feng UNQUALIFIED
Antonio CaudyGermanyIvan Magalhaes RENEWAL
Costa DilliardFranceBernardo Dominic RENEWAL
Munro FerenczSpainAnna Fali NEGOTIATION
Jefferson SchemmerBrazilStephen Shaw QUALIFIED
Cody SaylorsIndiaAsiya Javayant UNQUALIFIED
Mayumi KolmetzGermanyAsiya Javayant PROPOSAL
Tony FollerBrazilIoni Bowcher NEW
Leon OldroydCanadaStephen Shaw QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Ashley DoeItalyElwin Sharvill RENEWAL
Maria MarrierJapanAnna Fali NEW
Kaitlin OstroskyAustraliaIoni Bowcher NEW
Greenwood BologniaFranceIvan Magalhaes NEW
Francesco ShinkoRussiaXuxue Feng NEW
Mayumi KolmetzFranceElwin Sharvill QUALIFIED
Izzy GarufiSpainElwin Sharvill NEGOTIATION
Silvio SlusarskiItalyBernardo Dominic NEGOTIATION
David DarakjyUnited KingdomIvan Magalhaes RENEWAL
Tony FollerItalyAnna Fali NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Nicolas IturbideAustralia2026-04-14Rousseaux, Michael Esq QUALIFIED26Bernardo Dominic
1001Silvio SlusarskiIndia2026-04-30Chemel, James L Cpa UNQUALIFIED46Bernardo Dominic
1002Jones VocelkaUnited Kingdom2026-05-05Feltz Printing Service UNQUALIFIED12Ioni Bowcher
1003Munro FerenczBrazil2026-04-12Morlong Associates NEGOTIATION99Asiya Javayant
1004Alejandro PerinUnited Kingdom2026-05-03Printing Dimensions PROPOSAL22Xuxue Feng
1005Izzy GarufiFrance2026-05-05Feltz Printing Service UNQUALIFIED19Stephen Shaw
1006Morrow RutaJapan2026-04-13Printing Dimensions RENEWAL24Amy Elsner
1007Claire TollnerUnited Kingdom2026-04-21Chemel, James L Cpa NEW51Bernardo Dominic
1008Wickens NestleRussia2026-05-02Morlong Associates NEW70Xuxue Feng
1009Tony FollerRussia2026-04-26Chemel, James L Cpa RENEWAL62Asiya Javayant
1010Clifford RimArgentina2026-05-07Feltz Printing Service NEW66Anna Fali
1011Greenwood BologniaCanada2026-04-17Chanay, Jeffrey A Esq NEW98Onyama Limba
1012Francesco ShinkoArgentina2026-05-10Feiner Bros NEW14Ioni Bowcher
1013Sinclair WaycottJapan2026-05-09Chemel, James L Cpa NEW89Stephen Shaw
1014Tony FollerFrance2026-04-27Rangoni Of Florence QUALIFIED29Anna Fali
1015Maria MarrierItaly2026-04-28Buckley Miller Wright NEW4Ioni Bowcher
1016Juan WieserAustralia2026-04-23Buckley Miller Wright NEGOTIATION21Anna Fali
1017James ButtGermany2026-04-17Benton, John B Jr UNQUALIFIED6Stephen Shaw
1018Antonio CaudyJapan2026-04-12Chanay, Jeffrey A Esq NEW53Onyama Limba
1019Jones VocelkaIndia2026-05-03Chemel, James L Cpa NEW81Stephen Shaw
1020Murillo MaletArgentina2026-04-22King, Christopher A Esq PROPOSAL26Asiya Javayant
1021James ButtItaly2026-05-09Printing Dimensions UNQUALIFIED66Asiya Javayant
1022Morrow RutaCanada2026-04-26Rangoni Of Florence UNQUALIFIED86Ivan Magalhaes
1023Cody SaylorsGermany2026-04-24Benton, John B Jr PROPOSAL35Elwin Sharvill
1024Cody SaylorsGermany2026-04-27King, Christopher A Esq PROPOSAL44Stephen Shaw
1025Ashley DoeArgentina2026-04-28Commercial Press UNQUALIFIED73Xuxue Feng
1026Aruna FigeroaIndia2026-04-24Truhlar And Truhlar Attys UNQUALIFIED79Asiya Javayant
1027Costa DilliardItaly2026-04-18Buckley Miller Wright NEGOTIATION15Amy Elsner
1028Munro FerenczAustralia2026-04-19Benton, John B Jr UNQUALIFIED44Amy Elsner
1029Claire TollnerFrance2026-04-27King, Christopher A Esq PROPOSAL37Ivan Magalhaes
1030Ashley DoeBrazil2026-04-18Chapman, Ross E Esq QUALIFIED22Asiya Javayant
1031Stacey MacleadUnited Kingdom2026-04-17Chanay, Jeffrey A Esq RENEWAL36Onyama Limba
1032Francesco ShinkoIndia2026-04-19Truhlar And Truhlar Attys NEW24Anna Fali
1033Silvio SlusarskiAustralia2026-05-05Dorl, James J Esq NEGOTIATION6Ioni Bowcher
1034Deepesh ChuiItaly2026-04-14Feltz Printing Service NEGOTIATION6Asiya Javayant
1035Ivar PaprockiItaly2026-04-19Truhlar And Truhlar Attys QUALIFIED27Bernardo Dominic
1036Emily WhobreyFrance2026-04-13Commercial Press NEGOTIATION40Amy Elsner
1037Emily WhobreyFrance2026-04-26Truhlar And Truhlar Attys NEW38Onyama Limba
1038Johnson SergiJapan2026-04-28Chanay, Jeffrey A Esq NEW30Xuxue Feng
1039Octavia MaletJapan2026-04-24Morlong Associates QUALIFIED35Asiya Javayant
1040Ricardo GauchoUnited Kingdom2026-04-20Truhlar And Truhlar Attys NEGOTIATION89Stephen Shaw
1041Cody SaylorsItaly2026-04-13Truhlar And Truhlar Attys NEW67Asiya Javayant
1042Ashley DoeRussia2026-05-03Feiner Bros UNQUALIFIED92Onyama Limba
1043Francesco ShinkoCanada2026-04-22Chemel, James L Cpa PROPOSAL59Bernardo Dominic
1044Aika InouyeRussia2026-04-19Printing Dimensions QUALIFIED79Ivan Magalhaes
1045James ButtItaly2026-05-04Morlong Associates UNQUALIFIED99Xuxue Feng
1046Maria MarrierUnited Kingdom2026-05-11Buckley Miller Wright NEGOTIATION30Amy Elsner
1047Smith GlickSpain2026-04-15Feltz Printing Service NEW44Amy Elsner
1048Misaki RoysterUnited Kingdom2026-04-29King, Christopher A Esq NEGOTIATION70Ioni Bowcher
1049Francesco ShinkoAustralia2026-04-13Feiner Bros PROPOSAL43Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Claire TollnerBrazilElwin Sharvill NEW
Mayumi KolmetzUnited KingdomXuxue Feng NEGOTIATION
Faith GillianItalyElwin Sharvill NEGOTIATION
Leja CaldareraIndiaOnyama Limba PROPOSAL
Chavez BriddickAustraliaIoni Bowcher NEW
Nicolas IturbideItalyOnyama Limba PROPOSAL
Octavia MaletArgentinaOnyama Limba PROPOSAL
Mayumi KolmetzArgentinaAnna Fali QUALIFIED
Leja CaldareraCanadaStephen Shaw NEW
Aruna FigeroaJapanAmy Elsner UNQUALIFIED
Nicolas IturbideSpainElwin Sharvill NEW
Cody SaylorsArgentinaElwin Sharvill PROPOSAL
Smith GlickGermanyAnna Fali QUALIFIED
Smith GlickItalyElwin Sharvill QUALIFIED
Sinclair WaycottFranceStephen Shaw QUALIFIED
Francesco ShinkoAustraliaStephen Shaw UNQUALIFIED
Leja CaldareraJapanStephen Shaw RENEWAL
Clifford RimBrazilXuxue Feng RENEWAL
Munro FerenczCanadaAsiya Javayant RENEWAL
Salvatore StockhamCanadaBernardo Dominic UNQUALIFIED
David DarakjyIndiaIoni Bowcher UNQUALIFIED
Silvio SlusarskiIndiaXuxue Feng PROPOSAL
Wickens NestleFranceAmy Elsner RENEWAL
Leon OldroydAustraliaOnyama Limba RENEWAL
Kadeem FlosiGermanyStephen Shaw NEGOTIATION
Alejandro PerinRussiaElwin Sharvill QUALIFIED
Stacey MacleadArgentinaBernardo Dominic NEGOTIATION
Ashley DoeIndiaOnyama Limba NEGOTIATION
Jones VocelkaSpainIvan Magalhaes PROPOSAL
Johnson SergiIndiaAmy Elsner NEW
Jeanfrancois VenereCanadaElwin Sharvill UNQUALIFIED
Smith GlickRussiaAmy Elsner NEGOTIATION
Faith GillianIndiaIoni Bowcher UNQUALIFIED
Emily WhobreyRussiaXuxue Feng UNQUALIFIED
Murillo MaletIndiaStephen Shaw PROPOSAL
Silvio SlusarskiGermanyStephen Shaw QUALIFIED
Silvio SlusarskiRussiaIvan Magalhaes RENEWAL
Aditya KuskoJapanElwin Sharvill QUALIFIED
Silvio SlusarskiSpainAsiya Javayant RENEWAL
Ricardo GauchoGermanyStephen Shaw NEGOTIATION
Adams MorascaItalyAnna Fali UNQUALIFIED
Misaki RoysterGermanyAnna Fali QUALIFIED
Maisha RulapaughItalyElwin Sharvill NEW
Mujtaba NickaFranceIvan Magalhaes UNQUALIFIED
Greenwood BologniaRussiaXuxue Feng NEW
Sinclair WaycottArgentinaOnyama Limba QUALIFIED
Jennifer AmigonIndiaBernardo Dominic QUALIFIED
Salvatore StockhamFranceIoni Bowcher NEGOTIATION
Ricardo GauchoArgentinaOnyama Limba UNQUALIFIED
Leja CaldareraArgentinaIoni Bowcher PROPOSAL
Frozen Columns
Name
Darci Poquette
Jones Vocelka
Juan Wieser
Adams Morasca
Sinclair Waycott
Julie Stenseth
Wickens Nestle
Stacey Maclead
Alejandro Perin
Arvin Albares
Munro Ferencz
Murillo Malet
Smith Glick
Juan Wieser
Stacey Maclead
Maisha Rulapaugh
Jefferson Schemmer
Leja Caldarera
Silvio Slusarski
Murillo Malet
Emily Whobrey
Stacey Maclead
Leja Caldarera
Francesco Shinko
Kadeem Flosi
Aditya Kusko
Leon Oldroyd
Deepesh Chui
Ashley Doe
Faith Gillian
Darci Poquette
Mayumi Kolmetz
Faith Gillian
Wickens Nestle
Maria Marrier
Greenwood Bolognia
Mujtaba Nicka
Leja Caldarera
Francesco Shinko
Maisha Rulapaugh
Wickens Nestle
Leon Oldroyd
Kadeem Flosi
Emily Whobrey
Mayumi Kolmetz
David Darakjy
Jefferson Schemmer
Wickens Nestle
Isabel Bowley
Aika Inouye
IdCountryDate
1000France2026-05-06
1001Australia2026-04-24
1002Argentina2026-04-18
1003Japan2026-04-23
1004Russia2026-04-17
1005United Kingdom2026-05-04
1006Japan2026-04-18
1007Germany2026-04-15
1008Brazil2026-04-22
1009Spain2026-04-15
1010United Kingdom2026-04-29
1011Canada2026-05-08
1012Russia2026-04-24
1013Italy2026-04-20
1014Russia2026-05-02
1015Japan2026-05-03
1016Germany2026-04-24
1017Brazil2026-05-03
1018Canada2026-05-08
1019Brazil2026-05-05
1020Italy2026-05-01
1021United Kingdom2026-04-25
1022Brazil2026-04-21
1023India2026-04-15
1024United Kingdom2026-04-13
1025India2026-05-06
1026India2026-04-22
1027India2026-05-07
1028Spain2026-04-14
1029France2026-04-25
1030Japan2026-04-21
1031Canada2026-04-25
1032Argentina2026-05-07
1033Germany2026-04-20
1034Canada2026-04-15
1035United Kingdom2026-04-28
1036India2026-05-03
1037United Kingdom2026-05-02
1038Spain2026-05-09
1039Spain2026-04-25
1040Germany2026-05-01
1041Russia2026-04-25
1042Japan2026-04-27
1043India2026-05-02
1044Argentina2026-04-25
1045France2026-04-28
1046India2026-04-13
1047Russia2026-04-12
1048Brazil2026-04-12
1049Argentina2026-04-20

On-Demand Data

NameIdCountryDate
Smith Glick1000Australia2026-05-03
Antonio Caudy1001Germany2026-05-01
Clifford Rim1002Spain2026-04-27
Maria Marrier1003Brazil2026-04-25
Costa Dilliard1004Italy2026-04-20
Sinclair Waycott1005India2026-05-05
Tony Foller1006Spain2026-04-30
Kaitlin Ostrosky1007Australia2026-04-22
Aika Inouye1008Australia2026-04-18
Claire Tollner1009Argentina2026-04-12
Chavez Briddick1010India2026-04-25
Jennifer Amigon1011Russia2026-04-14
Julie Stenseth1012Russia2026-04-17
Emily Whobrey1013Brazil2026-05-04
Jones Vocelka1014France2026-04-28
Isabel Bowley1015Germany2026-04-19
Wickens Nestle1016Japan2026-04-27
Octavia Malet1017India2026-05-07
Julie Stenseth1018Australia2026-04-23
Jennifer Amigon1019France2026-04-24
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ivar PaprockiUnited KingdomElwin Sharvill QUALIFIED
Salvatore StockhamCanadaElwin Sharvill UNQUALIFIED
Mayumi KolmetzJapanAsiya Javayant QUALIFIED
Johnson SergiFranceElwin Sharvill RENEWAL
Julie StensethCanadaAsiya Javayant NEW
Faith GillianSpainAnna Fali PROPOSAL
Leon OldroydUnited KingdomAmy Elsner NEGOTIATION
Antonio CaudySpainAmy Elsner NEGOTIATION
Misaki RoysterJapanAsiya Javayant UNQUALIFIED
Mayumi KolmetzGermanyIvan Magalhaes PROPOSAL
Greenwood BologniaUnited KingdomIvan Magalhaes QUALIFIED
Murillo MaletSpainBernardo Dominic QUALIFIED
Nicolas IturbideIndiaXuxue Feng NEGOTIATION
Aruna FigeroaRussiaAsiya Javayant NEW
Ivar PaprockiAustraliaStephen Shaw PROPOSAL
Costa DilliardJapanBernardo Dominic NEGOTIATION
Emily WhobreyIndiaIvan Magalhaes RENEWAL
James ButtFranceAnna Fali NEW
Izzy GarufiUnited KingdomBernardo Dominic UNQUALIFIED
Smith GlickAustraliaBernardo Dominic UNQUALIFIED
Ricardo GauchoArgentinaAsiya Javayant QUALIFIED
Aruna FigeroaAustraliaXuxue Feng UNQUALIFIED
Johnson SergiFranceBernardo Dominic PROPOSAL
Kadeem FlosiJapanIvan Magalhaes PROPOSAL
Munro FerenczJapanAmy Elsner QUALIFIED
Tony FollerFranceIvan Magalhaes NEGOTIATION
Misaki RoysterAustraliaBernardo Dominic NEW
Clifford RimIndiaOnyama Limba NEW
Kaitlin OstroskyArgentinaBernardo Dominic QUALIFIED
Cody SaylorsSpainIoni Bowcher NEGOTIATION
Emily WhobreyAustraliaIoni Bowcher QUALIFIED
Emily WhobreyJapanElwin Sharvill RENEWAL
Arvin AlbaresUnited KingdomAmy Elsner RENEWAL
Leon OldroydIndiaXuxue Feng PROPOSAL
Izzy GarufiJapanStephen Shaw RENEWAL
Silvio SlusarskiCanadaElwin Sharvill QUALIFIED
Aruna FigeroaUnited KingdomXuxue Feng NEW
Misaki RoysterFranceBernardo Dominic RENEWAL
Jefferson SchemmerBrazilBernardo Dominic UNQUALIFIED
Costa DilliardBrazilAsiya Javayant NEW

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