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
Darci PoquetteFranceOnyama Limba UNQUALIFIED
Stacey MacleadBrazilAsiya Javayant RENEWAL
David DarakjyBrazilAsiya Javayant NEGOTIATION
Tony FollerGermanyIvan Magalhaes NEGOTIATION
Tony FollerItalyBernardo Dominic NEGOTIATION
Rodrigues CampainBrazilIoni Bowcher QUALIFIED
Faith GillianIndiaStephen Shaw NEGOTIATION
David DarakjyIndiaAnna Fali PROPOSAL
Chavez BriddickFranceElwin Sharvill QUALIFIED
Misaki RoysterGermanyAnna Fali QUALIFIED
Jones VocelkaUnited KingdomIvan Magalhaes PROPOSAL
Alejandro PerinRussiaStephen Shaw RENEWAL
Costa DilliardIndiaIvan Magalhaes NEW
Murillo MaletGermanyOnyama Limba PROPOSAL
James ButtIndiaAsiya Javayant NEW
Deepesh ChuiIndiaIvan Magalhaes RENEWAL
Costa DilliardBrazilAsiya Javayant NEW
Smith GlickBrazilElwin Sharvill QUALIFIED
Aika InouyeArgentinaElwin Sharvill UNQUALIFIED
Costa DilliardAustraliaAnna Fali PROPOSAL
Mujtaba NickaCanadaStephen Shaw UNQUALIFIED
Aika InouyeFranceElwin Sharvill NEW
Mujtaba NickaCanadaXuxue Feng PROPOSAL
Juan WieserAustraliaOnyama Limba QUALIFIED
Antonio CaudyIndiaXuxue Feng NEW
Kaitlin OstroskyFranceElwin Sharvill NEW
Leja CaldareraSpainIvan Magalhaes RENEWAL
Johnson SergiRussiaElwin Sharvill NEGOTIATION
Aditya KuskoArgentinaBernardo Dominic NEGOTIATION
Jeanfrancois VenereItalyBernardo Dominic PROPOSAL
Kadeem FlosiFranceBernardo Dominic RENEWAL
Wickens NestleJapanXuxue Feng UNQUALIFIED
Jones VocelkaAustraliaStephen Shaw QUALIFIED
Chavez BriddickJapanIoni Bowcher PROPOSAL
Wickens NestleJapanXuxue Feng PROPOSAL
Wickens NestleRussiaIvan Magalhaes QUALIFIED
Chavez BriddickItalyIoni Bowcher NEGOTIATION
Munro FerenczBrazilOnyama Limba NEW
Kaitlin OstroskyBrazilBernardo Dominic NEW
Costa DilliardRussiaBernardo Dominic UNQUALIFIED
Tony FollerItalyIoni Bowcher NEW
David DarakjyArgentinaStephen Shaw RENEWAL
Munro FerenczAustraliaElwin Sharvill PROPOSAL
Wickens NestleSpainStephen Shaw PROPOSAL
Faith GillianSpainIvan Magalhaes PROPOSAL
Ivar PaprockiRussiaIoni Bowcher NEGOTIATION
Stacey MacleadUnited KingdomXuxue Feng PROPOSAL
Wickens NestleAustraliaAmy Elsner PROPOSAL
Greenwood BologniaIndiaAmy Elsner UNQUALIFIED
Rodrigues CampainAustraliaBernardo Dominic QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Faith GillianArgentinaXuxue Feng RENEWAL
Wickens NestleBrazilAnna Fali QUALIFIED
Munro FerenczJapanOnyama Limba RENEWAL
Izzy GarufiJapanAmy Elsner RENEWAL
Tony FollerSpainStephen Shaw UNQUALIFIED
Julie StensethCanadaAnna Fali NEW
Stacey MacleadCanadaOnyama Limba UNQUALIFIED
Maria MarrierAustraliaAsiya Javayant RENEWAL
Costa DilliardFranceIoni Bowcher UNQUALIFIED
Claire TollnerFranceAsiya Javayant UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Isabel BowleyAustralia2026-05-16Chapman, Ross E Esq UNQUALIFIED69Asiya Javayant
1001Salvatore StockhamJapan2026-05-31Dorl, James J Esq PROPOSAL68Ioni Bowcher
1002Izzy GarufiRussia2026-05-21Benton, John B Jr RENEWAL90Stephen Shaw
1003Silvio SlusarskiIndia2026-06-03Chanay, Jeffrey A Esq NEGOTIATION53Elwin Sharvill
1004Greenwood BologniaAustralia2026-06-12Feltz Printing Service QUALIFIED61Onyama Limba
1005Mujtaba NickaBrazil2026-06-06King, Christopher A Esq RENEWAL34Elwin Sharvill
1006Octavia MaletRussia2026-05-22Rousseaux, Michael Esq NEW55Ivan Magalhaes
1007Maria MarrierJapan2026-06-04Commercial Press QUALIFIED69Asiya Javayant
1008Jennifer AmigonBrazil2026-05-19Chanay, Jeffrey A Esq RENEWAL12Asiya Javayant
1009Johnson SergiIndia2026-06-12Dorl, James J Esq PROPOSAL9Onyama Limba
1010Emily WhobreyItaly2026-06-13King, Christopher A Esq RENEWAL49Amy Elsner
1011Cody SaylorsArgentina2026-06-13Buckley Miller Wright UNQUALIFIED21Anna Fali
1012Jones VocelkaGermany2026-06-06Feiner Bros RENEWAL70Amy Elsner
1013Maria MarrierFrance2026-06-03Dorl, James J Esq QUALIFIED29Ioni Bowcher
1014Clifford RimCanada2026-06-13Printing Dimensions NEGOTIATION80Anna Fali
1015Kaitlin OstroskyGermany2026-06-10Feiner Bros RENEWAL99Anna Fali
1016Costa DilliardAustralia2026-06-07Rangoni Of Florence RENEWAL3Ioni Bowcher
1017Aditya KuskoRussia2026-06-08Morlong Associates QUALIFIED46Ivan Magalhaes
1018Smith GlickSpain2026-06-07Benton, John B Jr NEW12Ivan Magalhaes
1019Claire TollnerItaly2026-05-25Chanay, Jeffrey A Esq UNQUALIFIED56Anna Fali
1020David DarakjyJapan2026-06-10Chapman, Ross E Esq NEW79Amy Elsner
1021Sinclair WaycottCanada2026-05-15Feltz Printing Service NEGOTIATION26Ioni Bowcher
1022Octavia MaletBrazil2026-06-08Feiner Bros NEW39Xuxue Feng
1023James ButtJapan2026-05-20Dorl, James J Esq UNQUALIFIED86Ioni Bowcher
1024Claire TollnerRussia2026-06-06Printing Dimensions NEW53Xuxue Feng
1025Kadeem FlosiAustralia2026-06-01Dorl, James J Esq NEW48Amy Elsner
1026Aditya KuskoJapan2026-05-26Chapman, Ross E Esq UNQUALIFIED82Xuxue Feng
1027Aditya KuskoGermany2026-05-27Truhlar And Truhlar Attys UNQUALIFIED62Ivan Magalhaes
1028Rodrigues CampainAustralia2026-05-29King, Christopher A Esq QUALIFIED39Xuxue Feng
1029David DarakjyJapan2026-06-13King, Christopher A Esq QUALIFIED16Xuxue Feng
1030Aika InouyeRussia2026-05-26Chanay, Jeffrey A Esq PROPOSAL88Ivan Magalhaes
1031Stacey MacleadAustralia2026-05-18Feiner Bros UNQUALIFIED67Anna Fali
1032Jeanfrancois VenereFrance2026-05-18King, Christopher A Esq NEGOTIATION93Onyama Limba
1033Aika InouyeItaly2026-06-02King, Christopher A Esq QUALIFIED75Asiya Javayant
1034Stacey MacleadUnited Kingdom2026-05-18Rousseaux, Michael Esq NEGOTIATION67Xuxue Feng
1035Mujtaba NickaCanada2026-06-03Printing Dimensions QUALIFIED61Onyama Limba
1036Cody SaylorsFrance2026-05-22Chapman, Ross E Esq NEGOTIATION57Amy Elsner
1037Juan WieserBrazil2026-06-12Rangoni Of Florence UNQUALIFIED8Elwin Sharvill
1038Jennifer AmigonIndia2026-06-08Feiner Bros QUALIFIED8Anna Fali
1039James ButtItaly2026-06-11Truhlar And Truhlar Attys NEGOTIATION66Onyama Limba
1040Tony FollerIndia2026-06-04Buckley Miller Wright NEGOTIATION11Ivan Magalhaes
1041Greenwood BologniaItaly2026-05-20Rangoni Of Florence NEW99Bernardo Dominic
1042Costa DilliardBrazil2026-05-27Rangoni Of Florence QUALIFIED51Elwin Sharvill
1043Tony FollerAustralia2026-05-30Commercial Press RENEWAL62Amy Elsner
1044Maisha RulapaughArgentina2026-05-24Buckley Miller Wright QUALIFIED73Ioni Bowcher
1045Leja CaldareraRussia2026-05-18Feltz Printing Service NEGOTIATION81Ivan Magalhaes
1046Sinclair WaycottArgentina2026-05-20King, Christopher A Esq NEGOTIATION16Amy Elsner
1047Juan WieserRussia2026-05-21Commercial Press UNQUALIFIED21Onyama Limba
1048Costa DilliardJapan2026-05-22Buckley Miller Wright NEW34Xuxue Feng
1049Maria MarrierArgentina2026-06-02Rangoni Of Florence UNQUALIFIED80Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Octavia MaletAustraliaAsiya Javayant PROPOSAL
Rodrigues CampainArgentinaIoni Bowcher NEGOTIATION
Deepesh ChuiSpainElwin Sharvill NEGOTIATION
Aruna FigeroaGermanyStephen Shaw UNQUALIFIED
Sinclair WaycottRussiaOnyama Limba UNQUALIFIED
Adams MorascaGermanyXuxue Feng NEW
Aditya KuskoJapanBernardo Dominic NEGOTIATION
Alejandro PerinGermanyStephen Shaw QUALIFIED
Tony FollerRussiaXuxue Feng RENEWAL
Claire TollnerArgentinaAnna Fali RENEWAL
Aruna FigeroaRussiaAmy Elsner NEGOTIATION
Smith GlickCanadaIoni Bowcher NEW
Mujtaba NickaRussiaOnyama Limba QUALIFIED
Francesco ShinkoItalyAmy Elsner NEGOTIATION
Juan WieserRussiaBernardo Dominic PROPOSAL
Morrow RutaIndiaIoni Bowcher NEGOTIATION
Chavez BriddickFranceStephen Shaw RENEWAL
Morrow RutaJapanAnna Fali NEGOTIATION
Rodrigues CampainCanadaIoni Bowcher NEW
Alejandro PerinUnited KingdomXuxue Feng UNQUALIFIED
Salvatore StockhamAustraliaBernardo Dominic RENEWAL
David DarakjyAustraliaXuxue Feng QUALIFIED
Wickens NestleItalyAnna Fali UNQUALIFIED
Stacey MacleadJapanIoni Bowcher RENEWAL
Juan WieserRussiaOnyama Limba NEGOTIATION
Francesco ShinkoCanadaXuxue Feng PROPOSAL
Clifford RimSpainBernardo Dominic QUALIFIED
Isabel BowleySpainOnyama Limba UNQUALIFIED
Greenwood BologniaSpainAmy Elsner PROPOSAL
Salvatore StockhamUnited KingdomElwin Sharvill NEW
Leon OldroydCanadaAnna Fali UNQUALIFIED
David DarakjyIndiaBernardo Dominic PROPOSAL
Francesco ShinkoRussiaStephen Shaw QUALIFIED
Wickens NestleUnited KingdomStephen Shaw QUALIFIED
Chavez BriddickAustraliaIvan Magalhaes PROPOSAL
Stacey MacleadRussiaBernardo Dominic NEW
Darci PoquetteArgentinaXuxue Feng UNQUALIFIED
Clifford RimRussiaAnna Fali NEGOTIATION
Deepesh ChuiCanadaIvan Magalhaes QUALIFIED
Darci PoquetteUnited KingdomIoni Bowcher UNQUALIFIED
David DarakjyFranceOnyama Limba NEGOTIATION
Cody SaylorsSpainBernardo Dominic NEGOTIATION
Arvin AlbaresItalyAnna Fali UNQUALIFIED
Aika InouyeCanadaStephen Shaw NEGOTIATION
Sinclair WaycottSpainOnyama Limba NEW
Greenwood BologniaJapanIoni Bowcher NEGOTIATION
Mayumi KolmetzFranceIvan Magalhaes PROPOSAL
Silvio SlusarskiItalyElwin Sharvill PROPOSAL
Aditya KuskoRussiaIoni Bowcher RENEWAL
David DarakjyFranceAmy Elsner UNQUALIFIED
Frozen Columns
Name
Mujtaba Nicka
Emily Whobrey
Costa Dilliard
Misaki Royster
David Darakjy
Deepesh Chui
Kaitlin Ostrosky
Faith Gillian
Aika Inouye
Cody Saylors
Leja Caldarera
Izzy Garufi
Aruna Figeroa
Alejandro Perin
Izzy Garufi
Jefferson Schemmer
Claire Tollner
Maisha Rulapaugh
Jefferson Schemmer
Stacey Maclead
Johnson Sergi
Smith Glick
Jefferson Schemmer
Octavia Malet
Mujtaba Nicka
David Darakjy
Leja Caldarera
Jefferson Schemmer
Cody Saylors
Silvio Slusarski
Isabel Bowley
Faith Gillian
Antonio Caudy
Sinclair Waycott
Jennifer Amigon
Maisha Rulapaugh
Rodrigues Campain
Leon Oldroyd
Chavez Briddick
Deepesh Chui
Juan Wieser
Deepesh Chui
Jeanfrancois Venere
Murillo Malet
Octavia Malet
Costa Dilliard
Murillo Malet
Mayumi Kolmetz
Jeanfrancois Venere
Salvatore Stockham
IdCountryDate
1000Canada2026-05-26
1001Japan2026-06-05
1002United Kingdom2026-06-08
1003United Kingdom2026-05-29
1004United Kingdom2026-05-26
1005Australia2026-05-23
1006France2026-05-30
1007Brazil2026-06-09
1008Canada2026-06-10
1009United Kingdom2026-06-13
1010France2026-05-30
1011Argentina2026-06-10
1012Canada2026-06-05
1013India2026-05-30
1014Spain2026-06-08
1015Australia2026-05-17
1016Australia2026-06-07
1017Italy2026-05-31
1018Argentina2026-06-01
1019United Kingdom2026-05-26
1020Russia2026-05-24
1021India2026-06-12
1022India2026-05-23
1023Argentina2026-05-17
1024Argentina2026-05-16
1025Canada2026-05-16
1026Germany2026-05-15
1027Canada2026-05-18
1028Japan2026-05-30
1029India2026-06-06
1030Canada2026-05-18
1031Argentina2026-06-09
1032Germany2026-06-03
1033India2026-05-27
1034Germany2026-06-09
1035Spain2026-05-27
1036Japan2026-05-22
1037France2026-05-24
1038Brazil2026-06-11
1039Australia2026-05-17
1040Canada2026-05-30
1041Spain2026-05-29
1042United Kingdom2026-06-06
1043Spain2026-05-26
1044Russia2026-06-04
1045France2026-06-05
1046Japan2026-05-27
1047France2026-06-12
1048Spain2026-06-13
1049United Kingdom2026-05-29

On-Demand Data

NameIdCountryDate
Ricardo Gaucho1000Brazil2026-05-21
Salvatore Stockham1001Russia2026-06-12
Cody Saylors1002Canada2026-06-01
Ricardo Gaucho1003Argentina2026-05-23
Tony Foller1004United Kingdom2026-05-22
Aruna Figeroa1005Argentina2026-05-27
Sinclair Waycott1006United Kingdom2026-05-19
Salvatore Stockham1007Italy2026-05-27
Aditya Kusko1008United Kingdom2026-05-26
Silvio Slusarski1009United Kingdom2026-05-29
Juan Wieser1010Argentina2026-06-09
Cody Saylors1011India2026-05-19
Jeanfrancois Venere1012Brazil2026-05-24
Ashley Doe1013Argentina2026-06-12
Maisha Rulapaugh1014Argentina2026-05-24
Ashley Doe1015Italy2026-05-17
Maria Marrier1016Canada2026-05-29
Julie Stenseth1017Japan2026-05-19
James Butt1018Brazil2026-05-19
Isabel Bowley1019Brazil2026-05-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Stacey MacleadGermanyStephen Shaw RENEWAL
Jeanfrancois VenereArgentinaElwin Sharvill PROPOSAL
Adams MorascaIndiaAsiya Javayant QUALIFIED
Maisha RulapaughItalyAsiya Javayant QUALIFIED
Jennifer AmigonFranceStephen Shaw QUALIFIED
Juan WieserGermanyAsiya Javayant UNQUALIFIED
Claire TollnerJapanAsiya Javayant NEW
Mujtaba NickaFranceAmy Elsner NEGOTIATION
Mujtaba NickaGermanyIoni Bowcher NEGOTIATION
Sinclair WaycottBrazilIvan Magalhaes UNQUALIFIED
Chavez BriddickCanadaElwin Sharvill PROPOSAL
Aditya KuskoFranceOnyama Limba QUALIFIED
Jennifer AmigonJapanOnyama Limba NEGOTIATION
Claire TollnerJapanAnna Fali NEGOTIATION
Darci PoquetteBrazilAmy Elsner RENEWAL
Alejandro PerinCanadaAsiya Javayant NEW
Octavia MaletBrazilIvan Magalhaes PROPOSAL
Leja CaldareraItalyAmy Elsner UNQUALIFIED
Tony FollerFranceAmy Elsner NEGOTIATION
Octavia MaletItalyXuxue Feng NEW
Wickens NestleUnited KingdomBernardo Dominic UNQUALIFIED
Antonio CaudySpainAnna Fali NEGOTIATION
Murillo MaletIndiaXuxue Feng NEW
Maisha RulapaughIndiaAnna Fali PROPOSAL
Antonio CaudyGermanyAsiya Javayant UNQUALIFIED
Kadeem FlosiSpainAmy Elsner PROPOSAL
Kaitlin OstroskyAustraliaStephen Shaw NEW
Sinclair WaycottIndiaIoni Bowcher UNQUALIFIED
Arvin AlbaresCanadaStephen Shaw NEW
Munro FerenczCanadaIvan Magalhaes NEW
Munro FerenczSpainAmy Elsner NEGOTIATION
Stacey MacleadItalyIoni Bowcher PROPOSAL
Faith GillianSpainIvan Magalhaes RENEWAL
Salvatore StockhamBrazilAmy Elsner RENEWAL
Aika InouyeGermanyStephen Shaw UNQUALIFIED
Jones VocelkaSpainElwin Sharvill UNQUALIFIED
Ricardo GauchoBrazilIoni Bowcher RENEWAL
Jefferson SchemmerSpainXuxue Feng UNQUALIFIED
Jeanfrancois VenereJapanXuxue Feng UNQUALIFIED
Jefferson SchemmerBrazilIvan Magalhaes 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>