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
Faith GillianJapanBernardo Dominic QUALIFIED
Claire TollnerUnited KingdomAmy Elsner QUALIFIED
Sinclair WaycottAustraliaXuxue Feng RENEWAL
Arvin AlbaresAustraliaStephen Shaw PROPOSAL
Misaki RoysterJapanStephen Shaw UNQUALIFIED
Emily WhobreyArgentinaAmy Elsner NEGOTIATION
Maria MarrierItalyIvan Magalhaes QUALIFIED
Isabel BowleyJapanAsiya Javayant NEGOTIATION
Claire TollnerItalyOnyama Limba UNQUALIFIED
Clifford RimBrazilElwin Sharvill QUALIFIED
Aruna FigeroaUnited KingdomAnna Fali QUALIFIED
Stacey MacleadCanadaIvan Magalhaes PROPOSAL
Mayumi KolmetzBrazilAmy Elsner NEW
Isabel BowleyJapanAnna Fali NEW
Jefferson SchemmerIndiaElwin Sharvill NEGOTIATION
Wickens NestleArgentinaBernardo Dominic QUALIFIED
Emily WhobreyRussiaXuxue Feng UNQUALIFIED
Aditya KuskoBrazilXuxue Feng NEGOTIATION
Tony FollerIndiaIoni Bowcher PROPOSAL
Sinclair WaycottFranceBernardo Dominic PROPOSAL
Aika InouyeJapanAnna Fali RENEWAL
Leon OldroydJapanAnna Fali QUALIFIED
Antonio CaudyBrazilAmy Elsner RENEWAL
Faith GillianJapanStephen Shaw NEGOTIATION
Juan WieserAustraliaOnyama Limba QUALIFIED
Julie StensethIndiaAmy Elsner UNQUALIFIED
Juan WieserUnited KingdomAsiya Javayant RENEWAL
Aditya KuskoUnited KingdomIvan Magalhaes NEGOTIATION
Darci PoquetteItalyXuxue Feng PROPOSAL
Alejandro PerinJapanAnna Fali NEGOTIATION
Leon OldroydArgentinaElwin Sharvill PROPOSAL
Claire TollnerFranceAnna Fali RENEWAL
Deepesh ChuiFranceBernardo Dominic QUALIFIED
Aika InouyeSpainBernardo Dominic RENEWAL
Cody SaylorsUnited KingdomElwin Sharvill NEW
Rodrigues CampainGermanyAsiya Javayant QUALIFIED
Leon OldroydItalyAsiya Javayant NEW
Greenwood BologniaGermanyAmy Elsner NEW
Ivar PaprockiUnited KingdomStephen Shaw NEW
Wickens NestleIndiaBernardo Dominic NEGOTIATION
Aika InouyeJapanBernardo Dominic RENEWAL
Mujtaba NickaCanadaAsiya Javayant UNQUALIFIED
Jeanfrancois VenereUnited KingdomAmy Elsner RENEWAL
Morrow RutaGermanyIvan Magalhaes NEW
Greenwood BologniaArgentinaBernardo Dominic RENEWAL
Antonio CaudyBrazilStephen Shaw QUALIFIED
Misaki RoysterBrazilElwin Sharvill QUALIFIED
Kaitlin OstroskyUnited KingdomAmy Elsner RENEWAL
Smith GlickItalyIvan Magalhaes UNQUALIFIED
Mayumi KolmetzBrazilElwin Sharvill QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Jeanfrancois VenereArgentinaBernardo Dominic RENEWAL
Stacey MacleadCanadaIoni Bowcher PROPOSAL
Aika InouyeUnited KingdomAsiya Javayant QUALIFIED
Claire TollnerItalyIvan Magalhaes NEGOTIATION
Ricardo GauchoArgentinaElwin Sharvill NEGOTIATION
Rodrigues CampainUnited KingdomElwin Sharvill RENEWAL
Octavia MaletRussiaAmy Elsner NEW
Clifford RimRussiaElwin Sharvill PROPOSAL
Smith GlickIndiaIoni Bowcher QUALIFIED
Isabel BowleySpainAnna Fali NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Darci PoquetteGermany2026-06-03Chapman, Ross E Esq UNQUALIFIED95Asiya Javayant
1001Francesco ShinkoArgentina2026-06-06Feltz Printing Service UNQUALIFIED75Stephen Shaw
1002Darci PoquetteSpain2026-06-14Truhlar And Truhlar Attys QUALIFIED6Amy Elsner
1003Stacey MacleadAustralia2026-06-12Morlong Associates NEGOTIATION36Elwin Sharvill
1004Silvio SlusarskiIndia2026-05-30Morlong Associates PROPOSAL55Onyama Limba
1005Jones VocelkaJapan2026-06-14Dorl, James J Esq RENEWAL62Asiya Javayant
1006Julie StensethIndia2026-06-06Dorl, James J Esq PROPOSAL27Elwin Sharvill
1007Sinclair WaycottCanada2026-05-26Morlong Associates RENEWAL93Ivan Magalhaes
1008Misaki RoysterAustralia2026-05-24Dorl, James J Esq NEGOTIATION88Ivan Magalhaes
1009Johnson SergiArgentina2026-06-07Commercial Press RENEWAL3Asiya Javayant
1010Mayumi KolmetzRussia2026-06-05King, Christopher A Esq NEGOTIATION89Asiya Javayant
1011Johnson SergiRussia2026-05-25Commercial Press NEW88Bernardo Dominic
1012Claire TollnerArgentina2026-06-13Commercial Press NEGOTIATION88Onyama Limba
1013Aditya KuskoItaly2026-06-13Morlong Associates RENEWAL99Ioni Bowcher
1014Nicolas IturbideBrazil2026-05-28Dorl, James J Esq PROPOSAL25Amy Elsner
1015Ivar PaprockiAustralia2026-06-15Chemel, James L Cpa QUALIFIED69Bernardo Dominic
1016Misaki RoysterUnited Kingdom2026-06-06Chemel, James L Cpa NEGOTIATION84Elwin Sharvill
1017Sinclair WaycottArgentina2026-06-05Chapman, Ross E Esq NEW81Elwin Sharvill
1018Adams MorascaSpain2026-05-22Morlong Associates NEW47Anna Fali
1019Rodrigues CampainJapan2026-06-19Benton, John B Jr RENEWAL64Ivan Magalhaes
1020Murillo MaletRussia2026-06-16Commercial Press UNQUALIFIED93Asiya Javayant
1021Leon OldroydArgentina2026-06-07Benton, John B Jr PROPOSAL93Xuxue Feng
1022Costa DilliardGermany2026-06-11Commercial Press NEW43Stephen Shaw
1023Octavia MaletIndia2026-06-10Truhlar And Truhlar Attys QUALIFIED36Anna Fali
1024Munro FerenczBrazil2026-05-21Morlong Associates NEGOTIATION23Elwin Sharvill
1025Smith GlickCanada2026-06-15Dorl, James J Esq UNQUALIFIED68Onyama Limba
1026Claire TollnerBrazil2026-06-09King, Christopher A Esq NEGOTIATION74Asiya Javayant
1027Jennifer AmigonItaly2026-06-02Truhlar And Truhlar Attys NEW62Stephen Shaw
1028Jennifer AmigonSpain2026-06-14Morlong Associates QUALIFIED66Xuxue Feng
1029Francesco ShinkoIndia2026-05-28Rangoni Of Florence QUALIFIED1Xuxue Feng
1030Silvio SlusarskiSpain2026-06-10Chanay, Jeffrey A Esq NEW67Bernardo Dominic
1031Juan WieserCanada2026-06-04Truhlar And Truhlar Attys UNQUALIFIED47Ivan Magalhaes
1032Greenwood BologniaUnited Kingdom2026-06-06Chemel, James L Cpa PROPOSAL29Anna Fali
1033Kadeem FlosiItaly2026-05-29Feltz Printing Service QUALIFIED25Onyama Limba
1034Rodrigues CampainSpain2026-06-19Chemel, James L Cpa QUALIFIED93Onyama Limba
1035Murillo MaletRussia2026-06-11Feiner Bros NEW61Ivan Magalhaes
1036Cody SaylorsAustralia2026-05-23Feiner Bros RENEWAL85Asiya Javayant
1037Ashley DoeItaly2026-06-09Benton, John B Jr QUALIFIED36Xuxue Feng
1038Clifford RimRussia2026-06-06Printing Dimensions UNQUALIFIED59Amy Elsner
1039Munro FerenczGermany2026-05-23Rousseaux, Michael Esq NEGOTIATION94Ivan Magalhaes
1040Francesco ShinkoArgentina2026-06-03Chanay, Jeffrey A Esq PROPOSAL54Bernardo Dominic
1041Isabel BowleyItaly2026-05-28Chemel, James L Cpa PROPOSAL25Onyama Limba
1042Mujtaba NickaAustralia2026-06-09Morlong Associates RENEWAL9Onyama Limba
1043Emily WhobreyFrance2026-05-28Printing Dimensions RENEWAL4Ivan Magalhaes
1044Alejandro PerinCanada2026-06-04Feltz Printing Service PROPOSAL88Bernardo Dominic
1045Tony FollerBrazil2026-06-04Chanay, Jeffrey A Esq QUALIFIED58Amy Elsner
1046Izzy GarufiSpain2026-06-09Chemel, James L Cpa NEGOTIATION3Bernardo Dominic
1047Aruna FigeroaUnited Kingdom2026-06-14Rangoni Of Florence PROPOSAL60Anna Fali
1048Darci PoquetteCanada2026-06-13Rousseaux, Michael Esq RENEWAL38Stephen Shaw
1049Aika InouyeCanada2026-06-13Commercial Press QUALIFIED19Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Octavia MaletJapanAsiya Javayant PROPOSAL
Rodrigues CampainFranceAmy Elsner NEGOTIATION
Isabel BowleyJapanOnyama Limba PROPOSAL
Maria MarrierIndiaAmy Elsner NEW
Izzy GarufiGermanyOnyama Limba NEW
Faith GillianItalyIoni Bowcher QUALIFIED
Julie StensethFranceOnyama Limba UNQUALIFIED
Isabel BowleyIndiaAmy Elsner NEW
Maria MarrierAustraliaXuxue Feng NEGOTIATION
Faith GillianAustraliaAsiya Javayant RENEWAL
Leja CaldareraBrazilElwin Sharvill UNQUALIFIED
Faith GillianSpainAnna Fali RENEWAL
Julie StensethCanadaOnyama Limba RENEWAL
Jennifer AmigonAustraliaIoni Bowcher QUALIFIED
Claire TollnerSpainAsiya Javayant RENEWAL
Chavez BriddickBrazilXuxue Feng UNQUALIFIED
Kaitlin OstroskyBrazilStephen Shaw NEW
Ashley DoeCanadaIoni Bowcher PROPOSAL
Tony FollerAustraliaAmy Elsner NEW
Misaki RoysterRussiaAmy Elsner NEGOTIATION
Juan WieserItalyAmy Elsner NEGOTIATION
Deepesh ChuiSpainXuxue Feng RENEWAL
Salvatore StockhamFranceXuxue Feng NEW
Juan WieserBrazilStephen Shaw UNQUALIFIED
Jefferson SchemmerRussiaAnna Fali NEGOTIATION
James ButtBrazilBernardo Dominic NEW
Tony FollerIndiaXuxue Feng QUALIFIED
Rodrigues CampainSpainBernardo Dominic NEGOTIATION
Aditya KuskoItalyOnyama Limba NEW
Mujtaba NickaBrazilAmy Elsner UNQUALIFIED
Ivar PaprockiIndiaBernardo Dominic PROPOSAL
Jones VocelkaRussiaXuxue Feng NEW
Cody SaylorsBrazilElwin Sharvill PROPOSAL
Isabel BowleyFranceXuxue Feng NEGOTIATION
Alejandro PerinFranceAnna Fali QUALIFIED
Jennifer AmigonAustraliaBernardo Dominic QUALIFIED
Octavia MaletUnited KingdomAnna Fali NEGOTIATION
Smith GlickItalyStephen Shaw RENEWAL
Arvin AlbaresRussiaElwin Sharvill QUALIFIED
Aditya KuskoBrazilElwin Sharvill NEW
Costa DilliardGermanyOnyama Limba UNQUALIFIED
Juan WieserUnited KingdomAmy Elsner NEW
Leja CaldareraJapanElwin Sharvill UNQUALIFIED
Leja CaldareraCanadaAmy Elsner UNQUALIFIED
Munro FerenczGermanyIvan Magalhaes NEGOTIATION
Mujtaba NickaIndiaIoni Bowcher QUALIFIED
Alejandro PerinRussiaAnna Fali NEGOTIATION
Munro FerenczUnited KingdomBernardo Dominic NEGOTIATION
Leon OldroydGermanyAmy Elsner QUALIFIED
Misaki RoysterGermanyXuxue Feng UNQUALIFIED
Frozen Columns
Name
Kaitlin Ostrosky
Aika Inouye
Kaitlin Ostrosky
Leja Caldarera
Smith Glick
Maria Marrier
Maria Marrier
Morrow Ruta
Clifford Rim
Kadeem Flosi
Emily Whobrey
Isabel Bowley
Costa Dilliard
Julie Stenseth
Smith Glick
Aruna Figeroa
Claire Tollner
James Butt
Greenwood Bolognia
Clifford Rim
Izzy Garufi
Juan Wieser
Maisha Rulapaugh
Juan Wieser
Kaitlin Ostrosky
Maisha Rulapaugh
Claire Tollner
Emily Whobrey
Leja Caldarera
Ashley Doe
Kaitlin Ostrosky
Murillo Malet
Arvin Albares
Emily Whobrey
Maria Marrier
Silvio Slusarski
Mayumi Kolmetz
Maisha Rulapaugh
Mayumi Kolmetz
Ivar Paprocki
Julie Stenseth
Misaki Royster
Cody Saylors
Emily Whobrey
Aruna Figeroa
Kadeem Flosi
Rodrigues Campain
Misaki Royster
Costa Dilliard
Francesco Shinko
IdCountryDate
1000United Kingdom2026-06-04
1001Australia2026-05-25
1002Brazil2026-06-02
1003Argentina2026-06-08
1004Brazil2026-05-31
1005Australia2026-05-27
1006France2026-06-11
1007Russia2026-06-15
1008United Kingdom2026-06-17
1009United Kingdom2026-05-31
1010Italy2026-06-17
1011Argentina2026-06-13
1012France2026-06-01
1013Germany2026-06-15
1014Australia2026-05-27
1015Brazil2026-05-30
1016India2026-06-10
1017France2026-06-14
1018Argentina2026-05-24
1019Italy2026-05-26
1020Germany2026-06-08
1021Italy2026-06-10
1022Brazil2026-06-13
1023Spain2026-06-02
1024Japan2026-06-09
1025Germany2026-05-26
1026Brazil2026-05-23
1027India2026-05-24
1028Russia2026-05-24
1029United Kingdom2026-06-07
1030Spain2026-06-11
1031Brazil2026-06-16
1032Canada2026-05-23
1033Brazil2026-05-21
1034Germany2026-06-13
1035United Kingdom2026-06-04
1036France2026-06-18
1037Argentina2026-05-25
1038Australia2026-06-09
1039Italy2026-06-13
1040Germany2026-06-15
1041Japan2026-06-17
1042Spain2026-05-23
1043Germany2026-05-27
1044Italy2026-06-11
1045Russia2026-06-18
1046France2026-05-22
1047Russia2026-06-09
1048Japan2026-05-29
1049Japan2026-05-26

On-Demand Data

NameIdCountryDate
Smith Glick1000Spain2026-06-13
Leon Oldroyd1001Canada2026-05-31
Maisha Rulapaugh1002Australia2026-06-14
Jones Vocelka1003Brazil2026-06-08
Salvatore Stockham1004Italy2026-05-25
Antonio Caudy1005Canada2026-06-19
Wickens Nestle1006Italy2026-06-10
Munro Ferencz1007France2026-06-05
Sinclair Waycott1008Spain2026-06-18
Kaitlin Ostrosky1009United Kingdom2026-05-21
Aika Inouye1010United Kingdom2026-06-15
Jefferson Schemmer1011Japan2026-06-13
Leon Oldroyd1012Russia2026-06-19
Juan Wieser1013Japan2026-06-18
Chavez Briddick1014Russia2026-06-02
Kaitlin Ostrosky1015France2026-05-22
Silvio Slusarski1016France2026-06-11
Jennifer Amigon1017Brazil2026-06-06
Leja Caldarera1018Canada2026-06-14
Kadeem Flosi1019Germany2026-05-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leja CaldareraAustraliaAmy Elsner QUALIFIED
Aruna FigeroaCanadaBernardo Dominic NEGOTIATION
Jones VocelkaItalyAmy Elsner QUALIFIED
Darci PoquetteSpainStephen Shaw UNQUALIFIED
Alejandro PerinSpainOnyama Limba PROPOSAL
Clifford RimAustraliaIoni Bowcher UNQUALIFIED
Johnson SergiItalyOnyama Limba UNQUALIFIED
Rodrigues CampainBrazilAmy Elsner PROPOSAL
Kadeem FlosiIndiaStephen Shaw RENEWAL
Smith GlickSpainAmy Elsner PROPOSAL
Izzy GarufiAustraliaIvan Magalhaes QUALIFIED
Misaki RoysterArgentinaElwin Sharvill RENEWAL
James ButtUnited KingdomOnyama Limba QUALIFIED
Octavia MaletUnited KingdomAnna Fali NEW
Aika InouyeUnited KingdomXuxue Feng NEW
Maria MarrierRussiaOnyama Limba RENEWAL
Silvio SlusarskiArgentinaXuxue Feng RENEWAL
Ivar PaprockiBrazilStephen Shaw UNQUALIFIED
Ashley DoeRussiaIvan Magalhaes PROPOSAL
Isabel BowleyGermanyAnna Fali UNQUALIFIED
Jones VocelkaArgentinaOnyama Limba QUALIFIED
Aditya KuskoArgentinaElwin Sharvill PROPOSAL
David DarakjyArgentinaBernardo Dominic QUALIFIED
Jeanfrancois VenereCanadaIoni Bowcher RENEWAL
Mujtaba NickaGermanyStephen Shaw NEW
Smith GlickAustraliaAmy Elsner NEGOTIATION
Silvio SlusarskiIndiaStephen Shaw NEGOTIATION
Stacey MacleadArgentinaXuxue Feng QUALIFIED
Jefferson SchemmerCanadaElwin Sharvill NEGOTIATION
Jones VocelkaAustraliaStephen Shaw RENEWAL
Smith GlickBrazilStephen Shaw QUALIFIED
Aruna FigeroaSpainElwin Sharvill NEW
Silvio SlusarskiSpainXuxue Feng PROPOSAL
Nicolas IturbideGermanyAsiya Javayant PROPOSAL
Kaitlin OstroskyGermanyAsiya Javayant QUALIFIED
Juan WieserUnited KingdomElwin Sharvill NEGOTIATION
Ricardo GauchoJapanElwin Sharvill QUALIFIED
Murillo MaletArgentinaStephen Shaw NEW
Claire TollnerUnited KingdomIvan Magalhaes RENEWAL
Faith GillianCanadaElwin Sharvill 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>