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
Johnson SergiIndiaXuxue Feng NEGOTIATION
Cody SaylorsFranceIvan Magalhaes NEGOTIATION
Isabel BowleyArgentinaAsiya Javayant NEW
Aditya KuskoItalyStephen Shaw RENEWAL
Silvio SlusarskiGermanyXuxue Feng NEGOTIATION
Claire TollnerAustraliaAnna Fali QUALIFIED
Octavia MaletSpainAnna Fali PROPOSAL
Rodrigues CampainUnited KingdomAsiya Javayant NEW
Julie StensethJapanStephen Shaw RENEWAL
Adams MorascaUnited KingdomAmy Elsner RENEWAL
Aika InouyeBrazilAnna Fali NEGOTIATION
Faith GillianItalyOnyama Limba PROPOSAL
Johnson SergiItalyBernardo Dominic NEGOTIATION
Silvio SlusarskiAustraliaIoni Bowcher PROPOSAL
Claire TollnerGermanyXuxue Feng RENEWAL
Costa DilliardJapanXuxue Feng RENEWAL
Rodrigues CampainFranceIvan Magalhaes QUALIFIED
Rodrigues CampainFranceBernardo Dominic QUALIFIED
Stacey MacleadBrazilAmy Elsner PROPOSAL
Munro FerenczGermanyIoni Bowcher QUALIFIED
Juan WieserCanadaIvan Magalhaes NEGOTIATION
Juan WieserSpainXuxue Feng NEW
Chavez BriddickBrazilAnna Fali PROPOSAL
Aruna FigeroaItalyAnna Fali PROPOSAL
Claire TollnerRussiaAmy Elsner RENEWAL
Aditya KuskoFranceIvan Magalhaes UNQUALIFIED
Morrow RutaItalyBernardo Dominic NEW
Kadeem FlosiUnited KingdomAnna Fali RENEWAL
Aruna FigeroaFranceElwin Sharvill PROPOSAL
Ashley DoeAustraliaBernardo Dominic NEW
Aika InouyeAustraliaIvan Magalhaes NEW
Julie StensethFranceAmy Elsner PROPOSAL
Francesco ShinkoGermanyAsiya Javayant NEGOTIATION
Morrow RutaAustraliaAsiya Javayant QUALIFIED
Darci PoquetteSpainIvan Magalhaes NEW
Kadeem FlosiFranceAnna Fali NEGOTIATION
Aika InouyeAustraliaAmy Elsner QUALIFIED
Adams MorascaFranceIvan Magalhaes NEW
Kaitlin OstroskyIndiaOnyama Limba QUALIFIED
Ashley DoeGermanyStephen Shaw NEW
Rodrigues CampainAustraliaAsiya Javayant PROPOSAL
Maisha RulapaughIndiaStephen Shaw NEGOTIATION
Clifford RimRussiaAmy Elsner NEGOTIATION
Misaki RoysterCanadaIvan Magalhaes UNQUALIFIED
Johnson SergiItalyStephen Shaw QUALIFIED
Ricardo GauchoIndiaIoni Bowcher UNQUALIFIED
Ivar PaprockiIndiaBernardo Dominic NEW
Mayumi KolmetzAustraliaStephen Shaw UNQUALIFIED
Kaitlin OstroskyCanadaAsiya Javayant QUALIFIED
Izzy GarufiGermanyAnna Fali PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Johnson SergiSpainXuxue Feng QUALIFIED
Aika InouyeFranceBernardo Dominic RENEWAL
Jefferson SchemmerAustraliaAmy Elsner NEGOTIATION
Leja CaldareraUnited KingdomAmy Elsner RENEWAL
Chavez BriddickJapanIvan Magalhaes RENEWAL
Alejandro PerinItalyStephen Shaw PROPOSAL
Claire TollnerRussiaElwin Sharvill QUALIFIED
Kadeem FlosiArgentinaAsiya Javayant NEGOTIATION
Ivar PaprockiCanadaOnyama Limba UNQUALIFIED
Alejandro PerinCanadaStephen Shaw PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Kadeem FlosiGermany2026-04-09Feltz Printing Service RENEWAL12Asiya Javayant
1001Juan WieserBrazil2026-04-10Rangoni Of Florence RENEWAL93Bernardo Dominic
1002Misaki RoysterBrazil2026-04-24Dorl, James J Esq NEGOTIATION27Ioni Bowcher
1003Munro FerenczAustralia2026-04-13Chapman, Ross E Esq NEW84Ivan Magalhaes
1004Smith GlickCanada2026-03-29Chanay, Jeffrey A Esq PROPOSAL66Onyama Limba
1005Ricardo GauchoFrance2026-04-17Commercial Press QUALIFIED25Bernardo Dominic
1006Emily WhobreyArgentina2026-03-27Chanay, Jeffrey A Esq NEW68Amy Elsner
1007Izzy GarufiJapan2026-04-10Chanay, Jeffrey A Esq PROPOSAL8Asiya Javayant
1008Leon OldroydBrazil2026-04-06Benton, John B Jr NEGOTIATION42Ivan Magalhaes
1009Ricardo GauchoAustralia2026-03-28Truhlar And Truhlar Attys PROPOSAL9Bernardo Dominic
1010Jeanfrancois VenereIndia2026-04-23Benton, John B Jr UNQUALIFIED29Anna Fali
1011David DarakjyBrazil2026-03-30Feiner Bros UNQUALIFIED17Bernardo Dominic
1012Morrow RutaBrazil2026-04-23Chapman, Ross E Esq NEW97Amy Elsner
1013Morrow RutaCanada2026-04-06Chapman, Ross E Esq QUALIFIED70Ivan Magalhaes
1014Mujtaba NickaGermany2026-04-14Rousseaux, Michael Esq NEGOTIATION99Elwin Sharvill
1015Jeanfrancois VenereIndia2026-04-18Truhlar And Truhlar Attys RENEWAL44Anna Fali
1016Izzy GarufiGermany2026-04-24Benton, John B Jr QUALIFIED52Anna Fali
1017Claire TollnerFrance2026-04-23Feltz Printing Service UNQUALIFIED42Stephen Shaw
1018Leja CaldareraBrazil2026-03-27Rousseaux, Michael Esq UNQUALIFIED72Anna Fali
1019Deepesh ChuiJapan2026-04-21Benton, John B Jr UNQUALIFIED48Asiya Javayant
1020Tony FollerGermany2026-04-08Chapman, Ross E Esq PROPOSAL3Stephen Shaw
1021Aika InouyeUnited Kingdom2026-04-09Commercial Press RENEWAL38Amy Elsner
1022Mayumi KolmetzBrazil2026-04-05King, Christopher A Esq RENEWAL49Bernardo Dominic
1023Kadeem FlosiAustralia2026-03-28Chemel, James L Cpa NEGOTIATION91Bernardo Dominic
1024Silvio SlusarskiCanada2026-04-14Rangoni Of Florence NEGOTIATION16Elwin Sharvill
1025Costa DilliardFrance2026-04-06Chapman, Ross E Esq NEW97Stephen Shaw
1026Aditya KuskoUnited Kingdom2026-03-31Printing Dimensions PROPOSAL38Xuxue Feng
1027Salvatore StockhamItaly2026-04-06Chanay, Jeffrey A Esq RENEWAL76Asiya Javayant
1028Maisha RulapaughSpain2026-04-21Truhlar And Truhlar Attys QUALIFIED20Onyama Limba
1029Morrow RutaRussia2026-03-26Rangoni Of Florence UNQUALIFIED33Onyama Limba
1030Jeanfrancois VenereRussia2026-04-12Feltz Printing Service NEGOTIATION48Amy Elsner
1031Aika InouyeRussia2026-03-29Dorl, James J Esq UNQUALIFIED4Elwin Sharvill
1032Smith GlickRussia2026-04-23Rousseaux, Michael Esq NEW86Elwin Sharvill
1033Misaki RoysterJapan2026-04-04Morlong Associates NEW14Asiya Javayant
1034Kaitlin OstroskyIndia2026-04-08Chemel, James L Cpa PROPOSAL65Ioni Bowcher
1035Jefferson SchemmerBrazil2026-04-22Printing Dimensions PROPOSAL38Onyama Limba
1036Antonio CaudyFrance2026-04-14Benton, John B Jr RENEWAL18Bernardo Dominic
1037Aditya KuskoIndia2026-03-31Feltz Printing Service NEGOTIATION96Stephen Shaw
1038Stacey MacleadBrazil2026-04-01Printing Dimensions NEGOTIATION20Ioni Bowcher
1039Jones VocelkaAustralia2026-04-04Benton, John B Jr RENEWAL76Bernardo Dominic
1040Ricardo GauchoArgentina2026-04-06Morlong Associates NEW96Bernardo Dominic
1041Jennifer AmigonArgentina2026-04-18King, Christopher A Esq RENEWAL42Ioni Bowcher
1042Emily WhobreyGermany2026-04-17Rangoni Of Florence PROPOSAL95Ioni Bowcher
1043Ricardo GauchoUnited Kingdom2026-04-06King, Christopher A Esq PROPOSAL21Bernardo Dominic
1044Morrow RutaJapan2026-04-05Feiner Bros PROPOSAL89Onyama Limba
1045Tony FollerRussia2026-04-22Rousseaux, Michael Esq RENEWAL17Anna Fali
1046Cody SaylorsRussia2026-04-15King, Christopher A Esq NEGOTIATION28Asiya Javayant
1047Chavez BriddickIndia2026-04-02Chanay, Jeffrey A Esq RENEWAL32Elwin Sharvill
1048Aika InouyeJapan2026-04-03Buckley Miller Wright UNQUALIFIED78Onyama Limba
1049Mayumi KolmetzIndia2026-04-15Dorl, James J Esq NEGOTIATION47Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Izzy GarufiBrazilAnna Fali NEGOTIATION
Munro FerenczAustraliaElwin Sharvill QUALIFIED
Sinclair WaycottArgentinaElwin Sharvill UNQUALIFIED
Salvatore StockhamBrazilXuxue Feng NEGOTIATION
Misaki RoysterAustraliaAnna Fali RENEWAL
Julie StensethAustraliaStephen Shaw RENEWAL
Octavia MaletJapanAnna Fali RENEWAL
Jennifer AmigonJapanIoni Bowcher UNQUALIFIED
Salvatore StockhamGermanyIvan Magalhaes PROPOSAL
Deepesh ChuiBrazilAmy Elsner NEGOTIATION
Tony FollerRussiaXuxue Feng NEW
Julie StensethIndiaAsiya Javayant PROPOSAL
Claire TollnerGermanyIvan Magalhaes NEGOTIATION
Chavez BriddickItalyIvan Magalhaes UNQUALIFIED
Mujtaba NickaArgentinaBernardo Dominic QUALIFIED
Johnson SergiArgentinaBernardo Dominic NEGOTIATION
Aditya KuskoCanadaStephen Shaw PROPOSAL
Adams MorascaJapanAnna Fali UNQUALIFIED
Alejandro PerinRussiaAnna Fali NEGOTIATION
Faith GillianAustraliaAsiya Javayant UNQUALIFIED
Julie StensethCanadaIvan Magalhaes NEW
Octavia MaletSpainAnna Fali PROPOSAL
Antonio CaudyJapanAnna Fali UNQUALIFIED
Greenwood BologniaRussiaAnna Fali PROPOSAL
Greenwood BologniaJapanBernardo Dominic NEGOTIATION
Wickens NestleCanadaElwin Sharvill RENEWAL
Kadeem FlosiArgentinaElwin Sharvill UNQUALIFIED
Cody SaylorsGermanyAsiya Javayant RENEWAL
Antonio CaudySpainOnyama Limba NEGOTIATION
Izzy GarufiArgentinaAsiya Javayant QUALIFIED
Cody SaylorsSpainElwin Sharvill RENEWAL
Leon OldroydItalyAnna Fali NEW
Adams MorascaJapanIvan Magalhaes PROPOSAL
Alejandro PerinIndiaAmy Elsner UNQUALIFIED
Antonio CaudyIndiaStephen Shaw PROPOSAL
Clifford RimCanadaBernardo Dominic QUALIFIED
Maisha RulapaughUnited KingdomOnyama Limba NEGOTIATION
Clifford RimFranceXuxue Feng NEGOTIATION
Adams MorascaJapanIvan Magalhaes QUALIFIED
Maisha RulapaughItalyElwin Sharvill NEGOTIATION
Antonio CaudyFranceAmy Elsner UNQUALIFIED
Nicolas IturbideJapanIvan Magalhaes RENEWAL
Silvio SlusarskiArgentinaStephen Shaw NEGOTIATION
Deepesh ChuiItalyIoni Bowcher PROPOSAL
Smith GlickIndiaAnna Fali QUALIFIED
Darci PoquetteRussiaIoni Bowcher NEW
Mayumi KolmetzIndiaAsiya Javayant QUALIFIED
Jones VocelkaRussiaBernardo Dominic UNQUALIFIED
Arvin AlbaresBrazilXuxue Feng NEGOTIATION
Juan WieserArgentinaOnyama Limba RENEWAL
Frozen Columns
Name
Claire Tollner
Jefferson Schemmer
Julie Stenseth
Misaki Royster
Mayumi Kolmetz
Juan Wieser
Francesco Shinko
Munro Ferencz
Leon Oldroyd
Clifford Rim
Juan Wieser
Chavez Briddick
Tony Foller
Ivar Paprocki
Francesco Shinko
Juan Wieser
Alejandro Perin
Darci Poquette
Aika Inouye
Aika Inouye
Deepesh Chui
Francesco Shinko
Emily Whobrey
Aika Inouye
Leon Oldroyd
Leon Oldroyd
Cody Saylors
Julie Stenseth
Kaitlin Ostrosky
Isabel Bowley
Morrow Ruta
Ashley Doe
Arvin Albares
Munro Ferencz
Kaitlin Ostrosky
Wickens Nestle
Adams Morasca
Morrow Ruta
Aditya Kusko
Kaitlin Ostrosky
Faith Gillian
Johnson Sergi
James Butt
Kadeem Flosi
Ivar Paprocki
Darci Poquette
Jones Vocelka
Wickens Nestle
Adams Morasca
Darci Poquette
IdCountryDate
1000Japan2026-03-31
1001India2026-04-13
1002Spain2026-03-29
1003Argentina2026-04-12
1004Australia2026-04-14
1005France2026-03-29
1006Brazil2026-04-02
1007Canada2026-04-14
1008Russia2026-04-03
1009Australia2026-04-06
1010Japan2026-03-31
1011France2026-04-13
1012France2026-04-13
1013India2026-04-03
1014Italy2026-04-22
1015Japan2026-04-12
1016Brazil2026-04-18
1017United Kingdom2026-04-10
1018Spain2026-04-09
1019Russia2026-04-08
1020France2026-04-05
1021Argentina2026-04-14
1022India2026-04-19
1023France2026-04-24
1024United Kingdom2026-04-24
1025United Kingdom2026-04-22
1026Italy2026-04-08
1027Australia2026-04-07
1028Russia2026-04-09
1029Spain2026-03-29
1030India2026-04-13
1031India2026-04-11
1032Brazil2026-04-09
1033Japan2026-03-28
1034France2026-03-26
1035India2026-03-29
1036India2026-04-08
1037India2026-04-23
1038United Kingdom2026-03-28
1039India2026-03-30
1040France2026-04-08
1041Spain2026-04-10
1042Australia2026-04-16
1043United Kingdom2026-04-08
1044Brazil2026-03-27
1045United Kingdom2026-04-15
1046Germany2026-04-05
1047India2026-04-20
1048Russia2026-04-01
1049Italy2026-03-31

On-Demand Data

NameIdCountryDate
Chavez Briddick1000India2026-04-19
Antonio Caudy1001Italy2026-04-11
Jones Vocelka1002France2026-04-12
Costa Dilliard1003Canada2026-04-11
Johnson Sergi1004Australia2026-03-29
Nicolas Iturbide1005Brazil2026-04-08
Maria Marrier1006United Kingdom2026-04-19
Adams Morasca1007India2026-03-26
Kaitlin Ostrosky1008Argentina2026-04-07
Rodrigues Campain1009Brazil2026-04-11
Aika Inouye1010Brazil2026-03-31
Maisha Rulapaugh1011Brazil2026-04-22
Nicolas Iturbide1012Japan2026-04-06
Octavia Malet1013Russia2026-04-24
Silvio Slusarski1014France2026-04-20
Kaitlin Ostrosky1015Spain2026-04-14
Wickens Nestle1016India2026-04-18
Mayumi Kolmetz1017Australia2026-04-04
Wickens Nestle1018Canada2026-04-09
Aika Inouye1019Australia2026-04-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Stacey MacleadJapanElwin Sharvill NEW
Morrow RutaBrazilOnyama Limba NEW
Silvio SlusarskiArgentinaXuxue Feng NEW
Wickens NestleItalyIvan Magalhaes QUALIFIED
Aruna FigeroaCanadaOnyama Limba UNQUALIFIED
Mujtaba NickaGermanyAnna Fali PROPOSAL
Deepesh ChuiRussiaAnna Fali RENEWAL
Faith GillianUnited KingdomAnna Fali NEGOTIATION
Maria MarrierRussiaAmy Elsner QUALIFIED
Murillo MaletJapanAnna Fali NEGOTIATION
Julie StensethUnited KingdomOnyama Limba RENEWAL
David DarakjyRussiaOnyama Limba QUALIFIED
Darci PoquetteIndiaBernardo Dominic UNQUALIFIED
Sinclair WaycottArgentinaStephen Shaw NEW
Mayumi KolmetzCanadaIvan Magalhaes UNQUALIFIED
Maisha RulapaughJapanBernardo Dominic NEW
Leon OldroydItalyAnna Fali NEGOTIATION
Nicolas IturbideIndiaIoni Bowcher NEW
Morrow RutaAustraliaXuxue Feng NEGOTIATION
Rodrigues CampainBrazilBernardo Dominic NEGOTIATION
Antonio CaudyFranceAnna Fali RENEWAL
Morrow RutaItalyOnyama Limba RENEWAL
Aditya KuskoRussiaIvan Magalhaes NEGOTIATION
Juan WieserItalyIvan Magalhaes NEW
Julie StensethIndiaStephen Shaw NEGOTIATION
Munro FerenczSpainXuxue Feng RENEWAL
Salvatore StockhamFranceAnna Fali PROPOSAL
Misaki RoysterSpainAnna Fali PROPOSAL
Octavia MaletAustraliaOnyama Limba NEGOTIATION
Munro FerenczFranceAmy Elsner RENEWAL
Izzy GarufiItalyAnna Fali QUALIFIED
Juan WieserAustraliaXuxue Feng QUALIFIED
Jones VocelkaRussiaXuxue Feng RENEWAL
Mujtaba NickaBrazilAmy Elsner PROPOSAL
Isabel BowleyBrazilAsiya Javayant QUALIFIED
Johnson SergiItalyIvan Magalhaes PROPOSAL
Salvatore StockhamJapanIvan Magalhaes NEGOTIATION
Claire TollnerSpainStephen Shaw PROPOSAL
Cody SaylorsSpainAmy Elsner NEGOTIATION
Ivar PaprockiItalyStephen Shaw 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>