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
Leja CaldareraFranceAsiya Javayant UNQUALIFIED
Jennifer AmigonIndiaElwin Sharvill NEW
Kaitlin OstroskyBrazilXuxue Feng UNQUALIFIED
Izzy GarufiAustraliaOnyama Limba PROPOSAL
Emily WhobreyBrazilAmy Elsner RENEWAL
Maria MarrierArgentinaBernardo Dominic NEW
Izzy GarufiRussiaBernardo Dominic NEW
Aika InouyeAustraliaAsiya Javayant PROPOSAL
Mayumi KolmetzSpainAnna Fali NEW
Maisha RulapaughGermanyOnyama Limba NEGOTIATION
Deepesh ChuiAustraliaIvan Magalhaes NEGOTIATION
Aditya KuskoItalyAmy Elsner NEW
Kadeem FlosiFranceStephen Shaw QUALIFIED
Sinclair WaycottArgentinaOnyama Limba PROPOSAL
Jennifer AmigonUnited KingdomXuxue Feng NEW
Ricardo GauchoJapanAnna Fali NEW
Kadeem FlosiUnited KingdomAmy Elsner NEW
Clifford RimFranceIvan Magalhaes PROPOSAL
Octavia MaletItalyAsiya Javayant QUALIFIED
Julie StensethGermanyIoni Bowcher UNQUALIFIED
Mujtaba NickaRussiaAmy Elsner NEW
Faith GillianFranceIvan Magalhaes RENEWAL
Greenwood BologniaSpainAsiya Javayant QUALIFIED
Deepesh ChuiIndiaAnna Fali QUALIFIED
Kadeem FlosiRussiaIoni Bowcher NEW
Juan WieserJapanStephen Shaw UNQUALIFIED
Jennifer AmigonAustraliaAsiya Javayant RENEWAL
Izzy GarufiCanadaElwin Sharvill UNQUALIFIED
Smith GlickRussiaBernardo Dominic NEW
Rodrigues CampainRussiaXuxue Feng UNQUALIFIED
Maria MarrierBrazilIoni Bowcher UNQUALIFIED
Ivar PaprockiIndiaAmy Elsner NEGOTIATION
Chavez BriddickArgentinaAsiya Javayant NEGOTIATION
Morrow RutaAustraliaElwin Sharvill NEGOTIATION
Maria MarrierCanadaOnyama Limba RENEWAL
Alejandro PerinCanadaBernardo Dominic QUALIFIED
Isabel BowleyIndiaXuxue Feng PROPOSAL
Smith GlickItalyAnna Fali RENEWAL
Tony FollerJapanAmy Elsner UNQUALIFIED
Morrow RutaCanadaElwin Sharvill NEW
Mujtaba NickaSpainAsiya Javayant PROPOSAL
Costa DilliardFranceAmy Elsner PROPOSAL
Octavia MaletUnited KingdomStephen Shaw QUALIFIED
Maisha RulapaughArgentinaIoni Bowcher QUALIFIED
Cody SaylorsArgentinaIoni Bowcher NEGOTIATION
Jeanfrancois VenereFranceXuxue Feng NEW
Clifford RimRussiaIoni Bowcher PROPOSAL
Johnson SergiCanadaXuxue Feng QUALIFIED
Darci PoquetteBrazilStephen Shaw UNQUALIFIED
Izzy GarufiUnited KingdomBernardo Dominic QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Ivar PaprockiArgentinaElwin Sharvill UNQUALIFIED
Wickens NestleIndiaIoni Bowcher NEW
Kaitlin OstroskyGermanyIoni Bowcher UNQUALIFIED
Arvin AlbaresAustraliaAnna Fali QUALIFIED
Costa DilliardGermanyXuxue Feng QUALIFIED
James ButtJapanElwin Sharvill PROPOSAL
Misaki RoysterBrazilBernardo Dominic UNQUALIFIED
Chavez BriddickItalyIvan Magalhaes NEGOTIATION
Emily WhobreyFranceStephen Shaw NEW
Kadeem FlosiAustraliaStephen Shaw PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Stacey MacleadCanada2026-04-21Truhlar And Truhlar Attys RENEWAL94Elwin Sharvill
1001Darci PoquetteFrance2026-04-29King, Christopher A Esq UNQUALIFIED81Asiya Javayant
1002Deepesh ChuiGermany2026-04-23King, Christopher A Esq UNQUALIFIED31Anna Fali
1003Deepesh ChuiArgentina2026-04-18Commercial Press QUALIFIED92Stephen Shaw
1004Francesco ShinkoAustralia2026-04-16Dorl, James J Esq PROPOSAL97Bernardo Dominic
1005Antonio CaudyJapan2026-04-30Truhlar And Truhlar Attys NEW56Xuxue Feng
1006David DarakjyIndia2026-05-12Chapman, Ross E Esq RENEWAL80Ioni Bowcher
1007Cody SaylorsSpain2026-04-20Rousseaux, Michael Esq RENEWAL70Onyama Limba
1008Izzy GarufiBrazil2026-04-19Chemel, James L Cpa QUALIFIED2Ioni Bowcher
1009Rodrigues CampainIndia2026-05-06Benton, John B Jr RENEWAL61Anna Fali
1010Julie StensethGermany2026-05-01Chanay, Jeffrey A Esq UNQUALIFIED13Amy Elsner
1011James ButtItaly2026-05-09Benton, John B Jr PROPOSAL79Asiya Javayant
1012Cody SaylorsArgentina2026-04-22King, Christopher A Esq NEGOTIATION93Ioni Bowcher
1013Adams MorascaSpain2026-05-11Rousseaux, Michael Esq UNQUALIFIED40Xuxue Feng
1014James ButtUnited Kingdom2026-04-29Feltz Printing Service UNQUALIFIED47Anna Fali
1015Jefferson SchemmerAustralia2026-04-16Chapman, Ross E Esq NEGOTIATION93Anna Fali
1016Wickens NestleFrance2026-04-29Commercial Press NEW33Anna Fali
1017Darci PoquetteArgentina2026-05-02Feiner Bros PROPOSAL43Xuxue Feng
1018Munro FerenczIndia2026-04-19Benton, John B Jr RENEWAL72Bernardo Dominic
1019Kaitlin OstroskyItaly2026-05-12Printing Dimensions PROPOSAL61Amy Elsner
1020Antonio CaudyRussia2026-05-10Chanay, Jeffrey A Esq PROPOSAL0Ioni Bowcher
1021Salvatore StockhamUnited Kingdom2026-04-28Buckley Miller Wright UNQUALIFIED71Ivan Magalhaes
1022Leja CaldareraAustralia2026-05-01Chanay, Jeffrey A Esq NEGOTIATION93Anna Fali
1023Aika InouyeBrazil2026-04-15Chemel, James L Cpa QUALIFIED66Stephen Shaw
1024Rodrigues CampainArgentina2026-04-22Rousseaux, Michael Esq RENEWAL58Ioni Bowcher
1025Juan WieserFrance2026-05-05Morlong Associates PROPOSAL53Bernardo Dominic
1026Salvatore StockhamAustralia2026-04-13Commercial Press RENEWAL31Bernardo Dominic
1027Leja CaldareraFrance2026-04-18Truhlar And Truhlar Attys NEW14Ivan Magalhaes
1028Ricardo GauchoIndia2026-04-13Feltz Printing Service PROPOSAL97Onyama Limba
1029Munro FerenczFrance2026-05-12Chanay, Jeffrey A Esq NEW18Ivan Magalhaes
1030Aditya KuskoItaly2026-05-11Commercial Press NEW23Anna Fali
1031Leja CaldareraGermany2026-04-21Feltz Printing Service UNQUALIFIED40Asiya Javayant
1032David DarakjyBrazil2026-05-08Feiner Bros UNQUALIFIED90Asiya Javayant
1033Salvatore StockhamItaly2026-05-09King, Christopher A Esq NEW69Asiya Javayant
1034Mayumi KolmetzAustralia2026-04-19Commercial Press QUALIFIED93Ivan Magalhaes
1035Faith GillianAustralia2026-05-09Rousseaux, Michael Esq UNQUALIFIED86Onyama Limba
1036Maria MarrierIndia2026-05-12Buckley Miller Wright NEW89Asiya Javayant
1037Aditya KuskoSpain2026-05-09Chemel, James L Cpa UNQUALIFIED24Bernardo Dominic
1038Faith GillianCanada2026-04-14Morlong Associates RENEWAL0Stephen Shaw
1039Misaki RoysterFrance2026-04-15Truhlar And Truhlar Attys PROPOSAL56Bernardo Dominic
1040Jeanfrancois VenereItaly2026-04-14Feltz Printing Service UNQUALIFIED21Ivan Magalhaes
1041Nicolas IturbideGermany2026-04-23Chanay, Jeffrey A Esq PROPOSAL18Anna Fali
1042Aruna FigeroaAustralia2026-04-25Rangoni Of Florence RENEWAL73Ioni Bowcher
1043Chavez BriddickItaly2026-04-30Benton, John B Jr NEW40Ivan Magalhaes
1044Francesco ShinkoArgentina2026-04-21Benton, John B Jr NEW95Bernardo Dominic
1045Claire TollnerSpain2026-05-08Benton, John B Jr NEGOTIATION48Asiya Javayant
1046Sinclair WaycottBrazil2026-05-11Printing Dimensions PROPOSAL27Bernardo Dominic
1047David DarakjyRussia2026-04-20Feltz Printing Service NEW41Xuxue Feng
1048Octavia MaletItaly2026-05-01Dorl, James J Esq RENEWAL44Elwin Sharvill
1049Greenwood BologniaAustralia2026-04-17Buckley Miller Wright PROPOSAL62Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Izzy GarufiJapanBernardo Dominic UNQUALIFIED
Isabel BowleySpainBernardo Dominic UNQUALIFIED
Julie StensethUnited KingdomStephen Shaw RENEWAL
Smith GlickGermanyStephen Shaw PROPOSAL
Darci PoquetteFranceIvan Magalhaes NEW
Sinclair WaycottArgentinaAmy Elsner UNQUALIFIED
Alejandro PerinCanadaBernardo Dominic NEGOTIATION
Tony FollerBrazilBernardo Dominic RENEWAL
Kadeem FlosiCanadaIoni Bowcher PROPOSAL
Clifford RimGermanyXuxue Feng RENEWAL
Ashley DoeGermanyAmy Elsner RENEWAL
Wickens NestleUnited KingdomStephen Shaw NEW
Jeanfrancois VenereSpainElwin Sharvill UNQUALIFIED
Kadeem FlosiArgentinaIvan Magalhaes RENEWAL
Ivar PaprockiRussiaAnna Fali NEW
Deepesh ChuiSpainElwin Sharvill QUALIFIED
Kaitlin OstroskyCanadaOnyama Limba UNQUALIFIED
Costa DilliardGermanyElwin Sharvill PROPOSAL
Aditya KuskoGermanyBernardo Dominic NEW
Greenwood BologniaArgentinaElwin Sharvill NEGOTIATION
Jones VocelkaFranceAsiya Javayant NEGOTIATION
David DarakjyItalyBernardo Dominic RENEWAL
Ashley DoeUnited KingdomElwin Sharvill RENEWAL
Nicolas IturbideFranceBernardo Dominic NEW
Johnson SergiGermanyOnyama Limba RENEWAL
Chavez BriddickSpainOnyama Limba NEW
Rodrigues CampainAustraliaElwin Sharvill NEGOTIATION
Arvin AlbaresIndiaAnna Fali NEGOTIATION
Smith GlickIndiaElwin Sharvill QUALIFIED
Faith GillianCanadaIvan Magalhaes NEGOTIATION
Mujtaba NickaItalyXuxue Feng RENEWAL
Ricardo GauchoItalyAnna Fali QUALIFIED
Mayumi KolmetzUnited KingdomStephen Shaw QUALIFIED
Silvio SlusarskiRussiaAmy Elsner RENEWAL
Darci PoquetteRussiaAsiya Javayant NEGOTIATION
Salvatore StockhamSpainAnna Fali NEGOTIATION
Ivar PaprockiAustraliaAmy Elsner RENEWAL
Chavez BriddickBrazilIoni Bowcher NEW
Chavez BriddickJapanElwin Sharvill PROPOSAL
Johnson SergiJapanIoni Bowcher NEW
Mujtaba NickaSpainIvan Magalhaes PROPOSAL
Clifford RimSpainAnna Fali NEGOTIATION
Aruna FigeroaItalyOnyama Limba QUALIFIED
Chavez BriddickRussiaBernardo Dominic QUALIFIED
Jennifer AmigonIndiaIoni Bowcher QUALIFIED
Darci PoquetteFranceAmy Elsner PROPOSAL
Jeanfrancois VenereGermanyIvan Magalhaes PROPOSAL
Tony FollerJapanOnyama Limba QUALIFIED
Izzy GarufiArgentinaIvan Magalhaes UNQUALIFIED
Emily WhobreyFranceXuxue Feng PROPOSAL
Frozen Columns
Name
Smith Glick
Silvio Slusarski
Murillo Malet
Murillo Malet
Silvio Slusarski
Leon Oldroyd
Ashley Doe
Costa Dilliard
Leja Caldarera
Johnson Sergi
Maria Marrier
Nicolas Iturbide
Maisha Rulapaugh
Mujtaba Nicka
Ivar Paprocki
James Butt
Misaki Royster
Salvatore Stockham
Maria Marrier
Deepesh Chui
Octavia Malet
Emily Whobrey
Kadeem Flosi
Wickens Nestle
Ivar Paprocki
Rodrigues Campain
Munro Ferencz
Isabel Bowley
Wickens Nestle
Nicolas Iturbide
Misaki Royster
Jeanfrancois Venere
Smith Glick
Misaki Royster
Aika Inouye
Clifford Rim
Chavez Briddick
Costa Dilliard
Tony Foller
Jones Vocelka
Silvio Slusarski
Tony Foller
Aditya Kusko
Rodrigues Campain
Tony Foller
Francesco Shinko
Murillo Malet
Kadeem Flosi
Izzy Garufi
Johnson Sergi
IdCountryDate
1000France2026-04-27
1001United Kingdom2026-04-23
1002Russia2026-05-03
1003Australia2026-05-10
1004Australia2026-04-15
1005United Kingdom2026-04-29
1006Russia2026-04-21
1007United Kingdom2026-05-09
1008Canada2026-04-30
1009United Kingdom2026-05-01
1010France2026-04-17
1011Russia2026-04-20
1012Spain2026-04-19
1013Italy2026-04-20
1014Brazil2026-04-26
1015Argentina2026-04-15
1016United Kingdom2026-05-11
1017Germany2026-04-27
1018Italy2026-05-07
1019Australia2026-04-23
1020Brazil2026-05-12
1021Spain2026-05-11
1022Japan2026-05-04
1023Brazil2026-05-09
1024France2026-04-25
1025Argentina2026-04-23
1026Germany2026-05-03
1027Russia2026-05-08
1028Germany2026-04-29
1029Germany2026-05-03
1030Japan2026-05-05
1031Japan2026-04-15
1032Germany2026-04-25
1033Japan2026-04-29
1034Germany2026-05-06
1035India2026-04-20
1036Argentina2026-04-23
1037France2026-04-21
1038Canada2026-04-28
1039India2026-04-13
1040Brazil2026-04-23
1041Brazil2026-05-02
1042Australia2026-04-16
1043Argentina2026-05-09
1044United Kingdom2026-04-13
1045Canada2026-04-13
1046Argentina2026-04-27
1047Spain2026-04-25
1048Italy2026-05-06
1049Argentina2026-04-25

On-Demand Data

NameIdCountryDate
Murillo Malet1000France2026-04-21
Kadeem Flosi1001India2026-04-20
Isabel Bowley1002Argentina2026-04-28
Munro Ferencz1003United Kingdom2026-04-26
Alejandro Perin1004Spain2026-05-10
Cody Saylors1005Australia2026-05-06
Clifford Rim1006India2026-05-11
Maria Marrier1007Japan2026-05-06
Leja Caldarera1008Spain2026-05-10
Nicolas Iturbide1009Argentina2026-04-27
Jeanfrancois Venere1010Canada2026-04-21
Mujtaba Nicka1011Canada2026-04-27
Julie Stenseth1012Russia2026-04-14
Antonio Caudy1013Germany2026-04-22
Rodrigues Campain1014Brazil2026-04-15
Silvio Slusarski1015Germany2026-05-01
Jones Vocelka1016India2026-04-14
Mayumi Kolmetz1017United Kingdom2026-04-17
Maria Marrier1018Brazil2026-05-02
Jeanfrancois Venere1019Germany2026-05-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aditya KuskoItalyAsiya Javayant PROPOSAL
Adams MorascaGermanyAsiya Javayant NEGOTIATION
Costa DilliardIndiaElwin Sharvill NEGOTIATION
Ashley DoeFranceAsiya Javayant RENEWAL
Maisha RulapaughCanadaStephen Shaw NEGOTIATION
Morrow RutaArgentinaIoni Bowcher NEW
Adams MorascaItalyIoni Bowcher NEW
Antonio CaudyGermanyOnyama Limba PROPOSAL
Stacey MacleadSpainIoni Bowcher QUALIFIED
Jeanfrancois VenereCanadaIvan Magalhaes UNQUALIFIED
Misaki RoysterIndiaStephen Shaw RENEWAL
Silvio SlusarskiCanadaBernardo Dominic UNQUALIFIED
Misaki RoysterGermanyXuxue Feng RENEWAL
Deepesh ChuiJapanIvan Magalhaes PROPOSAL
Aika InouyeSpainXuxue Feng NEW
Leon OldroydUnited KingdomIvan Magalhaes RENEWAL
Salvatore StockhamJapanIvan Magalhaes RENEWAL
Maria MarrierSpainAmy Elsner QUALIFIED
Izzy GarufiAustraliaBernardo Dominic NEW
Clifford RimAustraliaAsiya Javayant NEGOTIATION
Leja CaldareraJapanIvan Magalhaes PROPOSAL
Maria MarrierUnited KingdomAnna Fali NEGOTIATION
Morrow RutaCanadaAnna Fali RENEWAL
Cody SaylorsIndiaBernardo Dominic PROPOSAL
Jones VocelkaItalyBernardo Dominic NEW
Francesco ShinkoUnited KingdomIoni Bowcher RENEWAL
Jennifer AmigonJapanAmy Elsner RENEWAL
Ivar PaprockiAustraliaAsiya Javayant PROPOSAL
James ButtGermanyStephen Shaw RENEWAL
Sinclair WaycottSpainAmy Elsner RENEWAL
Aika InouyeUnited KingdomOnyama Limba RENEWAL
Stacey MacleadAustraliaIoni Bowcher RENEWAL
Juan WieserUnited KingdomStephen Shaw RENEWAL
Morrow RutaSpainStephen Shaw UNQUALIFIED
Kadeem FlosiGermanyBernardo Dominic NEGOTIATION
Tony FollerArgentinaBernardo Dominic RENEWAL
Juan WieserIndiaXuxue Feng NEW
Maisha RulapaughGermanyOnyama Limba NEW
Kaitlin OstroskySpainXuxue Feng PROPOSAL
Kaitlin OstroskyRussiaAsiya 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>