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
Wickens NestleSpainAsiya Javayant NEGOTIATION
Izzy GarufiGermanyAnna Fali QUALIFIED
Claire TollnerCanadaBernardo Dominic QUALIFIED
Octavia MaletIndiaIoni Bowcher RENEWAL
Julie StensethAustraliaXuxue Feng QUALIFIED
Murillo MaletArgentinaIoni Bowcher NEGOTIATION
Deepesh ChuiUnited KingdomElwin Sharvill QUALIFIED
Juan WieserUnited KingdomIvan Magalhaes UNQUALIFIED
Adams MorascaAustraliaAmy Elsner QUALIFIED
Deepesh ChuiItalyElwin Sharvill QUALIFIED
Ivar PaprockiAustraliaIvan Magalhaes QUALIFIED
Alejandro PerinSpainXuxue Feng RENEWAL
Mujtaba NickaRussiaBernardo Dominic NEGOTIATION
Isabel BowleyCanadaElwin Sharvill UNQUALIFIED
Misaki RoysterBrazilIvan Magalhaes UNQUALIFIED
Johnson SergiCanadaStephen Shaw UNQUALIFIED
Ricardo GauchoGermanyBernardo Dominic NEGOTIATION
Jones VocelkaIndiaIoni Bowcher NEW
Morrow RutaCanadaStephen Shaw NEW
Francesco ShinkoSpainBernardo Dominic NEGOTIATION
Maria MarrierCanadaOnyama Limba RENEWAL
Leja CaldareraBrazilXuxue Feng NEGOTIATION
Maisha RulapaughAustraliaIoni Bowcher RENEWAL
Izzy GarufiUnited KingdomIvan Magalhaes PROPOSAL
Wickens NestleUnited KingdomAnna Fali NEGOTIATION
Mayumi KolmetzGermanyIvan Magalhaes PROPOSAL
Deepesh ChuiBrazilXuxue Feng QUALIFIED
Isabel BowleyArgentinaOnyama Limba UNQUALIFIED
Ricardo GauchoAustraliaElwin Sharvill UNQUALIFIED
Juan WieserCanadaIoni Bowcher NEW
Mayumi KolmetzFranceElwin Sharvill PROPOSAL
Morrow RutaJapanAnna Fali QUALIFIED
Cody SaylorsJapanIoni Bowcher NEW
Leja CaldareraArgentinaAmy Elsner NEGOTIATION
Munro FerenczUnited KingdomBernardo Dominic PROPOSAL
Morrow RutaArgentinaOnyama Limba NEGOTIATION
Costa DilliardCanadaAnna Fali PROPOSAL
Misaki RoysterCanadaIvan Magalhaes UNQUALIFIED
Faith GillianArgentinaIoni Bowcher NEW
David DarakjyBrazilAsiya Javayant UNQUALIFIED
Sinclair WaycottAustraliaElwin Sharvill PROPOSAL
Isabel BowleyIndiaXuxue Feng QUALIFIED
Cody SaylorsArgentinaXuxue Feng PROPOSAL
Smith GlickUnited KingdomOnyama Limba RENEWAL
Darci PoquetteArgentinaOnyama Limba NEW
Faith GillianAustraliaAmy Elsner QUALIFIED
Isabel BowleyFranceOnyama Limba NEW
Maisha RulapaughBrazilStephen Shaw QUALIFIED
Costa DilliardArgentinaAnna Fali RENEWAL
Maisha RulapaughCanadaOnyama Limba NEW
Horizontal
NameCountryRepresentativeStatus
Nicolas IturbideIndiaOnyama Limba PROPOSAL
Jennifer AmigonGermanyIvan Magalhaes PROPOSAL
Costa DilliardFranceStephen Shaw NEGOTIATION
Stacey MacleadFranceBernardo Dominic PROPOSAL
Salvatore StockhamBrazilAnna Fali UNQUALIFIED
Ivar PaprockiArgentinaXuxue Feng RENEWAL
Leon OldroydIndiaXuxue Feng PROPOSAL
Jennifer AmigonIndiaIoni Bowcher PROPOSAL
Costa DilliardRussiaAmy Elsner QUALIFIED
Costa DilliardFranceStephen Shaw NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Misaki RoysterUnited Kingdom2026-05-14Truhlar And Truhlar Attys NEW49Anna Fali
1001Cody SaylorsArgentina2026-05-22Chemel, James L Cpa UNQUALIFIED54Anna Fali
1002Jeanfrancois VenereRussia2026-05-24Printing Dimensions NEGOTIATION71Stephen Shaw
1003Rodrigues CampainUnited Kingdom2026-05-25Buckley Miller Wright NEGOTIATION35Stephen Shaw
1004Leon OldroydArgentina2026-05-04Chemel, James L Cpa QUALIFIED5Ivan Magalhaes
1005Jeanfrancois VenereItaly2026-05-20Truhlar And Truhlar Attys RENEWAL83Stephen Shaw
1006Octavia MaletIndia2026-05-18Chapman, Ross E Esq QUALIFIED57Stephen Shaw
1007Morrow RutaIndia2026-05-21King, Christopher A Esq PROPOSAL77Xuxue Feng
1008Faith GillianItaly2026-05-09Chapman, Ross E Esq PROPOSAL96Xuxue Feng
1009Silvio SlusarskiRussia2026-04-29Commercial Press QUALIFIED32Anna Fali
1010Octavia MaletIndia2026-05-19Morlong Associates PROPOSAL77Onyama Limba
1011Maisha RulapaughIndia2026-05-02Feltz Printing Service QUALIFIED99Bernardo Dominic
1012David DarakjyIndia2026-05-11Feltz Printing Service NEGOTIATION15Ioni Bowcher
1013Adams MorascaArgentina2026-05-05Benton, John B Jr QUALIFIED24Elwin Sharvill
1014Emily WhobreyJapan2026-05-14Chapman, Ross E Esq RENEWAL61Elwin Sharvill
1015Francesco ShinkoJapan2026-05-26Dorl, James J Esq NEGOTIATION67Bernardo Dominic
1016Aika InouyeBrazil2026-05-10Commercial Press NEGOTIATION91Xuxue Feng
1017Chavez BriddickRussia2026-05-06Truhlar And Truhlar Attys NEGOTIATION76Ioni Bowcher
1018Izzy GarufiBrazil2026-05-19Commercial Press NEGOTIATION25Ivan Magalhaes
1019Adams MorascaArgentina2026-05-14Feiner Bros UNQUALIFIED89Bernardo Dominic
1020Francesco ShinkoArgentina2026-05-25King, Christopher A Esq UNQUALIFIED21Elwin Sharvill
1021Juan WieserBrazil2026-05-03Chapman, Ross E Esq UNQUALIFIED54Amy Elsner
1022Johnson SergiRussia2026-05-23Rousseaux, Michael Esq NEW4Amy Elsner
1023Cody SaylorsJapan2026-05-27Feltz Printing Service RENEWAL56Stephen Shaw
1024Faith GillianArgentina2026-05-20Morlong Associates UNQUALIFIED63Elwin Sharvill
1025Chavez BriddickGermany2026-05-04Rangoni Of Florence QUALIFIED56Ioni Bowcher
1026Octavia MaletAustralia2026-05-23Chanay, Jeffrey A Esq NEGOTIATION11Anna Fali
1027Ivar PaprockiRussia2026-05-12Chanay, Jeffrey A Esq UNQUALIFIED61Anna Fali
1028Leon OldroydBrazil2026-05-20King, Christopher A Esq NEGOTIATION79Xuxue Feng
1029Clifford RimIndia2026-05-14Feiner Bros RENEWAL64Elwin Sharvill
1030Francesco ShinkoBrazil2026-05-17Benton, John B Jr UNQUALIFIED67Amy Elsner
1031Faith GillianSpain2026-05-24Printing Dimensions PROPOSAL34Elwin Sharvill
1032Antonio CaudyFrance2026-05-12Truhlar And Truhlar Attys QUALIFIED52Bernardo Dominic
1033Rodrigues CampainSpain2026-05-12Chemel, James L Cpa QUALIFIED62Onyama Limba
1034Juan WieserJapan2026-05-05Feltz Printing Service NEGOTIATION19Onyama Limba
1035Alejandro PerinCanada2026-05-03Chapman, Ross E Esq RENEWAL80Xuxue Feng
1036Stacey MacleadBrazil2026-05-01Chemel, James L Cpa RENEWAL7Asiya Javayant
1037Maisha RulapaughCanada2026-05-22Printing Dimensions UNQUALIFIED90Ioni Bowcher
1038Juan WieserBrazil2026-04-30Commercial Press QUALIFIED25Onyama Limba
1039Maria MarrierArgentina2026-05-22Dorl, James J Esq NEW21Asiya Javayant
1040Leon OldroydGermany2026-05-12Dorl, James J Esq NEW83Amy Elsner
1041Sinclair WaycottItaly2026-05-26Commercial Press QUALIFIED94Ioni Bowcher
1042James ButtCanada2026-05-03Printing Dimensions QUALIFIED21Anna Fali
1043Adams MorascaCanada2026-05-01Commercial Press QUALIFIED55Asiya Javayant
1044Wickens NestleAustralia2026-05-09Chanay, Jeffrey A Esq UNQUALIFIED42Bernardo Dominic
1045Emily WhobreyJapan2026-05-04Printing Dimensions QUALIFIED60Stephen Shaw
1046Mayumi KolmetzFrance2026-05-19Morlong Associates RENEWAL3Asiya Javayant
1047Julie StensethUnited Kingdom2026-04-30Morlong Associates NEW5Anna Fali
1048Deepesh ChuiUnited Kingdom2026-04-29Chemel, James L Cpa RENEWAL2Ioni Bowcher
1049Aika InouyeRussia2026-05-05Printing Dimensions PROPOSAL92Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Julie StensethAustraliaBernardo Dominic NEGOTIATION
Kaitlin OstroskyAustraliaAsiya Javayant PROPOSAL
Sinclair WaycottItalyAnna Fali UNQUALIFIED
Jennifer AmigonGermanyBernardo Dominic RENEWAL
Adams MorascaIndiaStephen Shaw PROPOSAL
Juan WieserItalyStephen Shaw QUALIFIED
Leja CaldareraAustraliaAsiya Javayant NEW
Chavez BriddickGermanyOnyama Limba PROPOSAL
Isabel BowleyRussiaElwin Sharvill NEW
Faith GillianJapanIoni Bowcher QUALIFIED
Mujtaba NickaGermanyIoni Bowcher UNQUALIFIED
Chavez BriddickUnited KingdomAnna Fali NEGOTIATION
Jones VocelkaUnited KingdomIvan Magalhaes NEGOTIATION
Leon OldroydAustraliaAsiya Javayant NEGOTIATION
Wickens NestleItalyAnna Fali QUALIFIED
Juan WieserBrazilAmy Elsner RENEWAL
Adams MorascaArgentinaOnyama Limba RENEWAL
Wickens NestleBrazilElwin Sharvill QUALIFIED
Clifford RimJapanBernardo Dominic RENEWAL
Alejandro PerinGermanyXuxue Feng UNQUALIFIED
Julie StensethJapanAnna Fali PROPOSAL
Izzy GarufiGermanyOnyama Limba NEW
James ButtRussiaAnna Fali QUALIFIED
Greenwood BologniaGermanyAnna Fali NEW
Cody SaylorsFranceAmy Elsner UNQUALIFIED
Rodrigues CampainFranceBernardo Dominic NEGOTIATION
Deepesh ChuiSpainAsiya Javayant RENEWAL
Aruna FigeroaBrazilStephen Shaw NEW
Ricardo GauchoIndiaBernardo Dominic RENEWAL
Darci PoquetteArgentinaOnyama Limba QUALIFIED
Aruna FigeroaJapanAmy Elsner QUALIFIED
Mujtaba NickaUnited KingdomIvan Magalhaes PROPOSAL
David DarakjyRussiaBernardo Dominic PROPOSAL
Alejandro PerinJapanXuxue Feng QUALIFIED
Ricardo GauchoBrazilOnyama Limba PROPOSAL
Maria MarrierCanadaBernardo Dominic QUALIFIED
Faith GillianArgentinaAmy Elsner UNQUALIFIED
Adams MorascaCanadaStephen Shaw NEW
Cody SaylorsAustraliaStephen Shaw RENEWAL
Alejandro PerinBrazilOnyama Limba RENEWAL
Chavez BriddickJapanAmy Elsner UNQUALIFIED
Ashley DoeAustraliaStephen Shaw NEGOTIATION
Jeanfrancois VenereCanadaXuxue Feng UNQUALIFIED
Maisha RulapaughRussiaOnyama Limba UNQUALIFIED
Stacey MacleadAustraliaAnna Fali NEGOTIATION
Aika InouyeCanadaXuxue Feng PROPOSAL
Aruna FigeroaFranceXuxue Feng NEGOTIATION
Antonio CaudySpainIvan Magalhaes NEW
Johnson SergiBrazilElwin Sharvill NEW
Deepesh ChuiJapanIoni Bowcher QUALIFIED
Frozen Columns
Name
Ashley Doe
Isabel Bowley
Claire Tollner
Julie Stenseth
Kaitlin Ostrosky
Arvin Albares
Izzy Garufi
Kaitlin Ostrosky
Aika Inouye
Alejandro Perin
Jefferson Schemmer
Costa Dilliard
Claire Tollner
Misaki Royster
Johnson Sergi
Aika Inouye
Rodrigues Campain
Nicolas Iturbide
Munro Ferencz
Clifford Rim
Clifford Rim
Rodrigues Campain
Faith Gillian
Johnson Sergi
Claire Tollner
Wickens Nestle
Jennifer Amigon
Alejandro Perin
Nicolas Iturbide
Adams Morasca
Claire Tollner
Ricardo Gaucho
Costa Dilliard
Antonio Caudy
Maria Marrier
Aruna Figeroa
Maria Marrier
Sinclair Waycott
Isabel Bowley
Jefferson Schemmer
Munro Ferencz
Munro Ferencz
Wickens Nestle
Cody Saylors
Ricardo Gaucho
Greenwood Bolognia
Maria Marrier
Leon Oldroyd
Ricardo Gaucho
Jeanfrancois Venere
IdCountryDate
1000Australia2026-05-09
1001United Kingdom2026-04-28
1002Australia2026-05-05
1003France2026-05-21
1004Australia2026-05-15
1005Russia2026-05-25
1006Italy2026-05-20
1007Russia2026-05-03
1008Japan2026-04-30
1009India2026-05-18
1010France2026-05-03
1011United Kingdom2026-05-17
1012Brazil2026-05-11
1013Australia2026-05-19
1014Canada2026-04-29
1015Australia2026-05-06
1016France2026-04-28
1017Spain2026-05-03
1018Spain2026-05-27
1019Italy2026-05-02
1020India2026-05-25
1021India2026-05-14
1022Canada2026-05-09
1023Japan2026-05-13
1024Japan2026-05-24
1025Russia2026-05-21
1026Canada2026-05-26
1027Brazil2026-05-07
1028Russia2026-05-01
1029India2026-05-10
1030Japan2026-05-17
1031India2026-05-16
1032Germany2026-05-21
1033India2026-05-22
1034Russia2026-05-19
1035Brazil2026-05-17
1036Brazil2026-05-11
1037Italy2026-05-24
1038Germany2026-05-10
1039Japan2026-04-29
1040Russia2026-04-29
1041United Kingdom2026-05-24
1042Argentina2026-04-28
1043India2026-05-09
1044Brazil2026-05-13
1045Italy2026-05-27
1046Japan2026-05-17
1047United Kingdom2026-05-22
1048Brazil2026-05-25
1049Argentina2026-05-08

On-Demand Data

NameIdCountryDate
Munro Ferencz1000Italy2026-05-25
Maisha Rulapaugh1001Canada2026-05-08
Izzy Garufi1002Argentina2026-05-02
Stacey Maclead1003Germany2026-05-12
Stacey Maclead1004France2026-05-03
Julie Stenseth1005United Kingdom2026-04-30
Ricardo Gaucho1006Germany2026-05-08
Cody Saylors1007France2026-05-16
Leja Caldarera1008United Kingdom2026-05-25
Mujtaba Nicka1009United Kingdom2026-05-04
Alejandro Perin1010Argentina2026-05-06
Faith Gillian1011Australia2026-05-24
Isabel Bowley1012India2026-05-23
Greenwood Bolognia1013Italy2026-05-19
Mayumi Kolmetz1014Italy2026-05-26
Costa Dilliard1015Canada2026-05-19
Ashley Doe1016Brazil2026-05-19
Emily Whobrey1017United Kingdom2026-05-19
Francesco Shinko1018Japan2026-05-27
Munro Ferencz1019Brazil2026-05-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ashley DoeItalyOnyama Limba RENEWAL
Sinclair WaycottGermanyAnna Fali QUALIFIED
Tony FollerFranceStephen Shaw UNQUALIFIED
Johnson SergiSpainIoni Bowcher PROPOSAL
Mujtaba NickaGermanyXuxue Feng UNQUALIFIED
Munro FerenczSpainIoni Bowcher QUALIFIED
Deepesh ChuiItalyIoni Bowcher NEGOTIATION
Kadeem FlosiSpainElwin Sharvill PROPOSAL
Costa DilliardUnited KingdomStephen Shaw NEGOTIATION
Aruna FigeroaIndiaAsiya Javayant UNQUALIFIED
Cody SaylorsAustraliaOnyama Limba QUALIFIED
Murillo MaletAustraliaOnyama Limba RENEWAL
Jeanfrancois VenereBrazilAsiya Javayant PROPOSAL
Adams MorascaSpainIvan Magalhaes PROPOSAL
Smith GlickArgentinaBernardo Dominic RENEWAL
Chavez BriddickAustraliaElwin Sharvill RENEWAL
Juan WieserUnited KingdomBernardo Dominic NEGOTIATION
Darci PoquetteCanadaBernardo Dominic RENEWAL
Kaitlin OstroskySpainStephen Shaw RENEWAL
Faith GillianJapanIvan Magalhaes PROPOSAL
Misaki RoysterRussiaBernardo Dominic PROPOSAL
Arvin AlbaresFranceAsiya Javayant NEW
Silvio SlusarskiGermanyBernardo Dominic NEW
Adams MorascaItalyAsiya Javayant RENEWAL
Clifford RimArgentinaIvan Magalhaes PROPOSAL
Julie StensethItalyAnna Fali NEW
Claire TollnerJapanAsiya Javayant PROPOSAL
Juan WieserRussiaIoni Bowcher PROPOSAL
Adams MorascaSpainBernardo Dominic NEW
Claire TollnerFranceBernardo Dominic UNQUALIFIED
Misaki RoysterArgentinaElwin Sharvill NEW
Johnson SergiIndiaAsiya Javayant QUALIFIED
Nicolas IturbideCanadaAmy Elsner NEW
Faith GillianUnited KingdomAsiya Javayant UNQUALIFIED
Izzy GarufiItalyOnyama Limba UNQUALIFIED
Rodrigues CampainArgentinaOnyama Limba NEW
Jones VocelkaJapanStephen Shaw NEW
Jefferson SchemmerAustraliaAnna Fali UNQUALIFIED
Aika InouyeJapanBernardo Dominic QUALIFIED
Cody SaylorsUnited KingdomXuxue Feng 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>