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
Maisha RulapaughSpainElwin Sharvill UNQUALIFIED
Kadeem FlosiFranceIoni Bowcher NEGOTIATION
Aika InouyeArgentinaOnyama Limba RENEWAL
Greenwood BologniaFranceXuxue Feng RENEWAL
Maisha RulapaughAustraliaStephen Shaw RENEWAL
Darci PoquetteJapanAmy Elsner QUALIFIED
Aruna FigeroaItalyIoni Bowcher NEGOTIATION
Octavia MaletSpainStephen Shaw PROPOSAL
Sinclair WaycottBrazilAsiya Javayant NEGOTIATION
Munro FerenczArgentinaIvan Magalhaes NEGOTIATION
James ButtBrazilIvan Magalhaes RENEWAL
James ButtItalyOnyama Limba UNQUALIFIED
Leja CaldareraAustraliaAmy Elsner QUALIFIED
Arvin AlbaresItalyElwin Sharvill RENEWAL
Darci PoquetteFranceOnyama Limba PROPOSAL
Ivar PaprockiItalyBernardo Dominic PROPOSAL
Greenwood BologniaRussiaAnna Fali RENEWAL
Aruna FigeroaRussiaBernardo Dominic NEW
Isabel BowleyRussiaStephen Shaw RENEWAL
Smith GlickAustraliaBernardo Dominic NEGOTIATION
Morrow RutaArgentinaStephen Shaw NEGOTIATION
Maisha RulapaughAustraliaXuxue Feng NEGOTIATION
Antonio CaudyGermanyIvan Magalhaes RENEWAL
Juan WieserCanadaOnyama Limba UNQUALIFIED
Ricardo GauchoBrazilIoni Bowcher NEW
Tony FollerUnited KingdomBernardo Dominic NEGOTIATION
Maisha RulapaughJapanAsiya Javayant NEGOTIATION
Tony FollerGermanyElwin Sharvill NEGOTIATION
Jeanfrancois VenereJapanBernardo Dominic PROPOSAL
Arvin AlbaresArgentinaIvan Magalhaes NEW
David DarakjySpainElwin Sharvill PROPOSAL
Silvio SlusarskiCanadaIoni Bowcher QUALIFIED
Faith GillianJapanAsiya Javayant QUALIFIED
Stacey MacleadIndiaAnna Fali PROPOSAL
Mayumi KolmetzRussiaAmy Elsner NEGOTIATION
Jefferson SchemmerBrazilAnna Fali NEW
Ashley DoeJapanStephen Shaw QUALIFIED
Rodrigues CampainItalyXuxue Feng PROPOSAL
Octavia MaletAustraliaXuxue Feng QUALIFIED
Mayumi KolmetzSpainAsiya Javayant NEW
Izzy GarufiJapanAnna Fali NEGOTIATION
Kadeem FlosiGermanyAsiya Javayant NEW
Francesco ShinkoArgentinaOnyama Limba PROPOSAL
Arvin AlbaresBrazilElwin Sharvill RENEWAL
Izzy GarufiItalyStephen Shaw PROPOSAL
Francesco ShinkoGermanyStephen Shaw RENEWAL
Arvin AlbaresCanadaIvan Magalhaes PROPOSAL
Aditya KuskoGermanyIvan Magalhaes NEGOTIATION
Maisha RulapaughCanadaAsiya Javayant PROPOSAL
Julie StensethAustraliaAnna Fali QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Tony FollerCanadaAmy Elsner PROPOSAL
Isabel BowleyFranceIvan Magalhaes RENEWAL
Emily WhobreyFranceAnna Fali RENEWAL
Jefferson SchemmerBrazilIvan Magalhaes UNQUALIFIED
Jones VocelkaIndiaAnna Fali PROPOSAL
Aditya KuskoCanadaAnna Fali RENEWAL
Rodrigues CampainJapanIoni Bowcher NEW
Julie StensethGermanyAsiya Javayant RENEWAL
Leon OldroydBrazilXuxue Feng NEGOTIATION
Kaitlin OstroskyJapanElwin Sharvill UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maisha RulapaughIndia2026-04-03Rangoni Of Florence QUALIFIED16Stephen Shaw
1001Jones VocelkaIndia2026-04-07Rousseaux, Michael Esq QUALIFIED15Ivan Magalhaes
1002Nicolas IturbideGermany2026-03-25Rousseaux, Michael Esq RENEWAL57Asiya Javayant
1003Juan WieserGermany2026-03-30Dorl, James J Esq NEGOTIATION6Elwin Sharvill
1004Aditya KuskoItaly2026-04-04Feiner Bros UNQUALIFIED72Anna Fali
1005Kadeem FlosiAustralia2026-04-16Buckley Miller Wright NEGOTIATION56Onyama Limba
1006Jones VocelkaItaly2026-03-26Feltz Printing Service NEGOTIATION60Asiya Javayant
1007Kaitlin OstroskyAustralia2026-04-10Feiner Bros QUALIFIED73Stephen Shaw
1008Wickens NestleAustralia2026-04-11Truhlar And Truhlar Attys QUALIFIED80Stephen Shaw
1009Deepesh ChuiSpain2026-04-02Rousseaux, Michael Esq UNQUALIFIED55Stephen Shaw
1010Darci PoquetteGermany2026-04-01Buckley Miller Wright NEW94Ivan Magalhaes
1011Costa DilliardGermany2026-03-26Rousseaux, Michael Esq NEW73Ioni Bowcher
1012Isabel BowleyUnited Kingdom2026-03-23Commercial Press UNQUALIFIED93Anna Fali
1013Greenwood BologniaBrazil2026-03-23Printing Dimensions NEW26Amy Elsner
1014James ButtItaly2026-04-05Morlong Associates PROPOSAL34Stephen Shaw
1015Ivar PaprockiAustralia2026-03-28Truhlar And Truhlar Attys UNQUALIFIED86Onyama Limba
1016Alejandro PerinSpain2026-04-08Buckley Miller Wright RENEWAL8Asiya Javayant
1017Antonio CaudyGermany2026-03-23Commercial Press QUALIFIED77Ioni Bowcher
1018Nicolas IturbideUnited Kingdom2026-04-13Dorl, James J Esq RENEWAL43Bernardo Dominic
1019Aika InouyeArgentina2026-04-05Truhlar And Truhlar Attys RENEWAL54Asiya Javayant
1020Darci PoquetteIndia2026-04-13Printing Dimensions UNQUALIFIED93Amy Elsner
1021Aika InouyeFrance2026-04-04Commercial Press UNQUALIFIED41Amy Elsner
1022Ashley DoeRussia2026-04-02King, Christopher A Esq NEW95Anna Fali
1023Morrow RutaItaly2026-04-06Rangoni Of Florence UNQUALIFIED64Bernardo Dominic
1024Wickens NestleArgentina2026-04-01Benton, John B Jr NEGOTIATION88Amy Elsner
1025Misaki RoysterSpain2026-04-10Dorl, James J Esq NEW35Ioni Bowcher
1026Maisha RulapaughIndia2026-04-06King, Christopher A Esq RENEWAL50Xuxue Feng
1027Salvatore StockhamItaly2026-04-14Dorl, James J Esq PROPOSAL28Onyama Limba
1028James ButtArgentina2026-04-17Chapman, Ross E Esq PROPOSAL18Amy Elsner
1029Maria MarrierCanada2026-04-08Printing Dimensions UNQUALIFIED67Amy Elsner
1030Leon OldroydSpain2026-04-04Truhlar And Truhlar Attys QUALIFIED47Bernardo Dominic
1031Darci PoquetteIndia2026-04-09Rangoni Of Florence RENEWAL73Ioni Bowcher
1032Costa DilliardIndia2026-03-29Rousseaux, Michael Esq UNQUALIFIED37Elwin Sharvill
1033Chavez BriddickGermany2026-04-14Feltz Printing Service NEW86Asiya Javayant
1034Ashley DoeAustralia2026-03-31Buckley Miller Wright QUALIFIED96Elwin Sharvill
1035Emily WhobreyIndia2026-04-06Buckley Miller Wright RENEWAL8Stephen Shaw
1036Faith GillianAustralia2026-04-03Feiner Bros QUALIFIED92Asiya Javayant
1037Jennifer AmigonBrazil2026-04-05Morlong Associates UNQUALIFIED68Onyama Limba
1038Deepesh ChuiArgentina2026-04-07Rangoni Of Florence QUALIFIED7Stephen Shaw
1039Alejandro PerinBrazil2026-03-23King, Christopher A Esq PROPOSAL93Asiya Javayant
1040Jefferson SchemmerBrazil2026-03-23Benton, John B Jr RENEWAL97Amy Elsner
1041David DarakjyGermany2026-04-17Chanay, Jeffrey A Esq NEW44Onyama Limba
1042Jones VocelkaItaly2026-04-05Morlong Associates PROPOSAL6Amy Elsner
1043Emily WhobreyAustralia2026-03-27Commercial Press RENEWAL8Elwin Sharvill
1044Sinclair WaycottCanada2026-04-01Chapman, Ross E Esq PROPOSAL41Amy Elsner
1045Jones VocelkaSpain2026-03-26Feltz Printing Service NEW92Amy Elsner
1046Faith GillianArgentina2026-04-11Rangoni Of Florence NEW41Anna Fali
1047Jefferson SchemmerAustralia2026-04-07Feiner Bros QUALIFIED40Asiya Javayant
1048Clifford RimJapan2026-04-09Feiner Bros UNQUALIFIED13Amy Elsner
1049Francesco ShinkoRussia2026-04-06Feltz Printing Service NEGOTIATION62Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Emily WhobreySpainIoni Bowcher QUALIFIED
Smith GlickBrazilXuxue Feng QUALIFIED
Leja CaldareraIndiaAmy Elsner RENEWAL
Murillo MaletGermanyStephen Shaw RENEWAL
Jeanfrancois VenereRussiaAnna Fali UNQUALIFIED
Stacey MacleadCanadaIoni Bowcher PROPOSAL
Isabel BowleySpainAnna Fali NEW
Leja CaldareraGermanyStephen Shaw NEGOTIATION
Julie StensethUnited KingdomStephen Shaw QUALIFIED
Ricardo GauchoFranceElwin Sharvill NEW
Antonio CaudyItalyIoni Bowcher UNQUALIFIED
Claire TollnerAustraliaElwin Sharvill PROPOSAL
Smith GlickGermanyElwin Sharvill RENEWAL
Aruna FigeroaRussiaIvan Magalhaes RENEWAL
Kadeem FlosiSpainElwin Sharvill PROPOSAL
Adams MorascaGermanyStephen Shaw NEW
Ashley DoeAustraliaAnna Fali PROPOSAL
Jefferson SchemmerAustraliaXuxue Feng NEW
Ivar PaprockiRussiaXuxue Feng QUALIFIED
Clifford RimGermanyElwin Sharvill PROPOSAL
Alejandro PerinCanadaOnyama Limba PROPOSAL
Aika InouyeCanadaOnyama Limba PROPOSAL
Kadeem FlosiIndiaAsiya Javayant NEW
Ivar PaprockiItalyAmy Elsner UNQUALIFIED
Smith GlickFranceIvan Magalhaes NEW
Francesco ShinkoArgentinaIoni Bowcher UNQUALIFIED
Adams MorascaItalyXuxue Feng NEW
Juan WieserFranceAmy Elsner PROPOSAL
Jones VocelkaArgentinaXuxue Feng PROPOSAL
Claire TollnerArgentinaElwin Sharvill RENEWAL
Antonio CaudyAustraliaIvan Magalhaes NEW
Mayumi KolmetzIndiaBernardo Dominic PROPOSAL
Jones VocelkaCanadaXuxue Feng PROPOSAL
Jefferson SchemmerIndiaAsiya Javayant RENEWAL
Salvatore StockhamSpainStephen Shaw QUALIFIED
Adams MorascaJapanIoni Bowcher QUALIFIED
Rodrigues CampainCanadaAmy Elsner NEW
Octavia MaletArgentinaIoni Bowcher NEW
Murillo MaletArgentinaAsiya Javayant PROPOSAL
Arvin AlbaresJapanAmy Elsner NEW
Greenwood BologniaArgentinaElwin Sharvill QUALIFIED
Sinclair WaycottCanadaStephen Shaw QUALIFIED
Johnson SergiCanadaStephen Shaw NEW
Nicolas IturbideRussiaAsiya Javayant NEGOTIATION
Maria MarrierSpainIoni Bowcher RENEWAL
Cody SaylorsIndiaAnna Fali NEGOTIATION
Antonio CaudyJapanIvan Magalhaes QUALIFIED
Aditya KuskoIndiaBernardo Dominic NEGOTIATION
Adams MorascaBrazilIvan Magalhaes PROPOSAL
Octavia MaletRussiaAsiya Javayant NEW
Frozen Columns
Name
Juan Wieser
Leon Oldroyd
Clifford Rim
Leja Caldarera
Chavez Briddick
Misaki Royster
Deepesh Chui
Juan Wieser
Julie Stenseth
Chavez Briddick
Claire Tollner
Juan Wieser
Alejandro Perin
Isabel Bowley
Alejandro Perin
Claire Tollner
Chavez Briddick
Rodrigues Campain
Antonio Caudy
Leja Caldarera
Chavez Briddick
Mujtaba Nicka
Ricardo Gaucho
Isabel Bowley
Darci Poquette
Faith Gillian
Cody Saylors
Kaitlin Ostrosky
Smith Glick
Maria Marrier
Alejandro Perin
Mujtaba Nicka
David Darakjy
Smith Glick
Emily Whobrey
Francesco Shinko
Emily Whobrey
Leon Oldroyd
Maisha Rulapaugh
Stacey Maclead
Darci Poquette
Kaitlin Ostrosky
Mayumi Kolmetz
Munro Ferencz
Jeanfrancois Venere
Darci Poquette
Smith Glick
Chavez Briddick
Rodrigues Campain
Jeanfrancois Venere
IdCountryDate
1000Argentina2026-04-19
1001Australia2026-04-06
1002Spain2026-04-16
1003Canada2026-04-03
1004Canada2026-04-06
1005Italy2026-04-11
1006United Kingdom2026-03-27
1007Brazil2026-04-16
1008Russia2026-04-06
1009Italy2026-04-14
1010Canada2026-04-19
1011Spain2026-04-12
1012India2026-04-04
1013Japan2026-04-15
1014Spain2026-04-03
1015Argentina2026-04-11
1016France2026-03-23
1017Russia2026-03-29
1018Argentina2026-04-03
1019Brazil2026-04-07
1020Spain2026-04-19
1021Brazil2026-03-28
1022Argentina2026-04-17
1023United Kingdom2026-03-28
1024Brazil2026-03-22
1025Italy2026-04-18
1026Argentina2026-04-11
1027Brazil2026-04-17
1028Russia2026-03-25
1029Germany2026-03-22
1030Germany2026-04-15
1031Germany2026-03-25
1032Germany2026-03-28
1033Brazil2026-03-23
1034India2026-03-31
1035Spain2026-03-27
1036Germany2026-04-07
1037India2026-04-10
1038Brazil2026-04-01
1039United Kingdom2026-03-30
1040Canada2026-04-09
1041Germany2026-04-10
1042Russia2026-03-25
1043Italy2026-04-04
1044Germany2026-04-15
1045Canada2026-03-31
1046Spain2026-04-02
1047Australia2026-03-29
1048Japan2026-04-15
1049Brazil2026-03-25

On-Demand Data

NameIdCountryDate
Darci Poquette1000Russia2026-04-02
Izzy Garufi1001Brazil2026-03-29
Alejandro Perin1002Russia2026-04-19
Ashley Doe1003Canada2026-03-30
Ivar Paprocki1004Italy2026-04-03
Jefferson Schemmer1005Germany2026-04-18
Julie Stenseth1006Japan2026-04-09
Jennifer Amigon1007Russia2026-03-21
Salvatore Stockham1008India2026-03-29
Adams Morasca1009Spain2026-03-27
Darci Poquette1010Japan2026-03-21
Adams Morasca1011Germany2026-04-05
Nicolas Iturbide1012Italy2026-04-06
Jeanfrancois Venere1013Spain2026-03-25
Wickens Nestle1014France2026-03-28
Salvatore Stockham1015Italy2026-03-26
Darci Poquette1016Germany2026-03-29
Silvio Slusarski1017United Kingdom2026-04-11
Jones Vocelka1018Germany2026-04-01
Deepesh Chui1019Russia2026-04-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Misaki RoysterRussiaOnyama Limba NEGOTIATION
Antonio CaudyItalyIvan Magalhaes PROPOSAL
Leja CaldareraGermanyElwin Sharvill UNQUALIFIED
Faith GillianJapanAmy Elsner QUALIFIED
Kadeem FlosiUnited KingdomBernardo Dominic QUALIFIED
Clifford RimItalyBernardo Dominic NEW
Costa DilliardAustraliaStephen Shaw NEGOTIATION
Izzy GarufiArgentinaStephen Shaw RENEWAL
Aika InouyeUnited KingdomOnyama Limba QUALIFIED
Maria MarrierRussiaIoni Bowcher UNQUALIFIED
Murillo MaletJapanIvan Magalhaes NEGOTIATION
Stacey MacleadArgentinaAmy Elsner RENEWAL
Clifford RimUnited KingdomIvan Magalhaes PROPOSAL
Mujtaba NickaUnited KingdomBernardo Dominic RENEWAL
Murillo MaletGermanyIvan Magalhaes UNQUALIFIED
Leja CaldareraFranceXuxue Feng UNQUALIFIED
Stacey MacleadUnited KingdomAnna Fali RENEWAL
Costa DilliardRussiaBernardo Dominic QUALIFIED
Aditya KuskoCanadaIoni Bowcher PROPOSAL
Rodrigues CampainSpainOnyama Limba PROPOSAL
David DarakjyJapanElwin Sharvill RENEWAL
Rodrigues CampainArgentinaIvan Magalhaes PROPOSAL
Isabel BowleyArgentinaXuxue Feng RENEWAL
David DarakjyUnited KingdomBernardo Dominic UNQUALIFIED
Kadeem FlosiAustraliaElwin Sharvill RENEWAL
Octavia MaletIndiaBernardo Dominic RENEWAL
Isabel BowleyItalyIvan Magalhaes UNQUALIFIED
Arvin AlbaresAustraliaBernardo Dominic NEW
Ashley DoeGermanyAmy Elsner RENEWAL
Aika InouyeIndiaIvan Magalhaes NEGOTIATION
Jennifer AmigonArgentinaElwin Sharvill NEGOTIATION
Julie StensethFranceXuxue Feng PROPOSAL
Leon OldroydFranceElwin Sharvill NEW
Munro FerenczBrazilIoni Bowcher UNQUALIFIED
Aditya KuskoGermanyXuxue Feng NEGOTIATION
Octavia MaletIndiaBernardo Dominic UNQUALIFIED
Aruna FigeroaUnited KingdomIvan Magalhaes NEW
Alejandro PerinAustraliaBernardo Dominic NEGOTIATION
Maria MarrierBrazilStephen Shaw NEW
Octavia MaletUnited KingdomIoni Bowcher NEGOTIATION

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