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
Claire TollnerFranceAsiya Javayant PROPOSAL
Jennifer AmigonBrazilAnna Fali NEW
Jennifer AmigonItalyXuxue Feng UNQUALIFIED
James ButtGermanyIvan Magalhaes NEGOTIATION
Kadeem FlosiSpainIvan Magalhaes NEW
Stacey MacleadItalyIvan Magalhaes PROPOSAL
Rodrigues CampainGermanyXuxue Feng UNQUALIFIED
Mayumi KolmetzSpainAsiya Javayant RENEWAL
Mujtaba NickaGermanyIoni Bowcher PROPOSAL
Nicolas IturbideGermanyAnna Fali QUALIFIED
Ashley DoeBrazilAnna Fali NEGOTIATION
Maria MarrierBrazilIoni Bowcher UNQUALIFIED
Adams MorascaUnited KingdomAsiya Javayant RENEWAL
Kadeem FlosiUnited KingdomBernardo Dominic QUALIFIED
Juan WieserFranceElwin Sharvill QUALIFIED
Mayumi KolmetzCanadaXuxue Feng QUALIFIED
Claire TollnerIndiaBernardo Dominic QUALIFIED
Kaitlin OstroskyUnited KingdomAsiya Javayant RENEWAL
Morrow RutaArgentinaBernardo Dominic QUALIFIED
Julie StensethAustraliaBernardo Dominic RENEWAL
Kaitlin OstroskyBrazilAsiya Javayant UNQUALIFIED
Aika InouyeItalyXuxue Feng NEW
Nicolas IturbideUnited KingdomBernardo Dominic UNQUALIFIED
Jeanfrancois VenereFranceAnna Fali QUALIFIED
Ricardo GauchoFranceXuxue Feng RENEWAL
David DarakjyBrazilStephen Shaw RENEWAL
Aika InouyeGermanyIvan Magalhaes NEW
Jones VocelkaRussiaElwin Sharvill PROPOSAL
Adams MorascaAustraliaXuxue Feng UNQUALIFIED
Munro FerenczBrazilOnyama Limba RENEWAL
Johnson SergiBrazilElwin Sharvill UNQUALIFIED
Faith GillianItalyElwin Sharvill NEGOTIATION
Tony FollerGermanyIoni Bowcher PROPOSAL
Costa DilliardRussiaBernardo Dominic QUALIFIED
Izzy GarufiItalyIoni Bowcher NEGOTIATION
Ivar PaprockiBrazilIvan Magalhaes UNQUALIFIED
Juan WieserRussiaBernardo Dominic QUALIFIED
Munro FerenczIndiaXuxue Feng NEGOTIATION
Jennifer AmigonJapanIvan Magalhaes NEGOTIATION
Stacey MacleadIndiaAnna Fali PROPOSAL
Smith GlickBrazilAmy Elsner PROPOSAL
Jeanfrancois VenereIndiaAmy Elsner QUALIFIED
Kadeem FlosiSpainXuxue Feng QUALIFIED
Leja CaldareraJapanAmy Elsner PROPOSAL
Salvatore StockhamSpainBernardo Dominic NEW
Silvio SlusarskiBrazilAsiya Javayant NEW
Salvatore StockhamAustraliaStephen Shaw NEGOTIATION
Salvatore StockhamItalyOnyama Limba UNQUALIFIED
James ButtFranceOnyama Limba UNQUALIFIED
Kaitlin OstroskyUnited KingdomIoni Bowcher NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Claire TollnerArgentinaAsiya Javayant NEGOTIATION
Morrow RutaAustraliaIvan Magalhaes NEW
Aruna FigeroaGermanyXuxue Feng QUALIFIED
Clifford RimAustraliaIoni Bowcher RENEWAL
David DarakjyFranceAnna Fali QUALIFIED
Greenwood BologniaFranceAmy Elsner NEGOTIATION
Kadeem FlosiRussiaStephen Shaw UNQUALIFIED
Sinclair WaycottRussiaAmy Elsner PROPOSAL
Kadeem FlosiJapanAmy Elsner NEGOTIATION
Arvin AlbaresIndiaElwin Sharvill PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Antonio CaudyFrance2026-04-15Feltz Printing Service NEW36Ivan Magalhaes
1001Alejandro PerinSpain2026-04-09Rangoni Of Florence RENEWAL55Anna Fali
1002David DarakjyBrazil2026-04-17Chapman, Ross E Esq UNQUALIFIED22Stephen Shaw
1003Adams MorascaSpain2026-04-21Chanay, Jeffrey A Esq UNQUALIFIED57Stephen Shaw
1004Leon OldroydRussia2026-04-05Feltz Printing Service QUALIFIED99Elwin Sharvill
1005Jennifer AmigonBrazil2026-04-10Chanay, Jeffrey A Esq QUALIFIED90Asiya Javayant
1006Stacey MacleadArgentina2026-04-05Printing Dimensions QUALIFIED61Onyama Limba
1007Ashley DoeAustralia2026-04-07Feltz Printing Service NEGOTIATION68Amy Elsner
1008Wickens NestleItaly2026-03-27Chapman, Ross E Esq PROPOSAL26Amy Elsner
1009Smith GlickIndia2026-04-14Chemel, James L Cpa NEGOTIATION68Ivan Magalhaes
1010Maisha RulapaughItaly2026-04-03Commercial Press NEW62Stephen Shaw
1011Mujtaba NickaJapan2026-04-13Rangoni Of Florence QUALIFIED51Bernardo Dominic
1012James ButtAustralia2026-04-23Buckley Miller Wright PROPOSAL64Amy Elsner
1013Mujtaba NickaJapan2026-03-28Printing Dimensions UNQUALIFIED57Ioni Bowcher
1014Leon OldroydJapan2026-04-02Rangoni Of Florence UNQUALIFIED11Stephen Shaw
1015Isabel BowleyFrance2026-04-18Chemel, James L Cpa RENEWAL62Xuxue Feng
1016Kaitlin OstroskyBrazil2026-03-29Chanay, Jeffrey A Esq NEW13Asiya Javayant
1017Maria MarrierCanada2026-04-14Morlong Associates NEW93Anna Fali
1018Kaitlin OstroskyUnited Kingdom2026-04-14Feiner Bros NEW41Ioni Bowcher
1019Aruna FigeroaRussia2026-04-14Feiner Bros NEGOTIATION72Stephen Shaw
1020Faith GillianCanada2026-04-20Printing Dimensions RENEWAL83Stephen Shaw
1021Jennifer AmigonRussia2026-04-06Benton, John B Jr UNQUALIFIED47Bernardo Dominic
1022Antonio CaudyFrance2026-04-21Truhlar And Truhlar Attys UNQUALIFIED96Anna Fali
1023Jones VocelkaIndia2026-04-16Rousseaux, Michael Esq NEW31Stephen Shaw
1024Greenwood BologniaGermany2026-04-09Chemel, James L Cpa NEGOTIATION60Elwin Sharvill
1025Murillo MaletRussia2026-04-15Feltz Printing Service RENEWAL57Bernardo Dominic
1026Cody SaylorsUnited Kingdom2026-04-15Morlong Associates RENEWAL81Stephen Shaw
1027Nicolas IturbideIndia2026-04-10Truhlar And Truhlar Attys QUALIFIED23Xuxue Feng
1028Leon OldroydItaly2026-04-02Benton, John B Jr UNQUALIFIED6Asiya Javayant
1029Nicolas IturbideBrazil2026-04-14Truhlar And Truhlar Attys NEGOTIATION10Ivan Magalhaes
1030Aditya KuskoUnited Kingdom2026-04-02Dorl, James J Esq RENEWAL0Ioni Bowcher
1031Johnson SergiGermany2026-03-31Commercial Press NEW22Asiya Javayant
1032Izzy GarufiBrazil2026-03-30Chanay, Jeffrey A Esq NEGOTIATION8Asiya Javayant
1033Leon OldroydIndia2026-03-30Commercial Press QUALIFIED26Amy Elsner
1034Morrow RutaBrazil2026-04-08Rangoni Of Florence UNQUALIFIED30Stephen Shaw
1035Aditya KuskoSpain2026-04-02Commercial Press NEGOTIATION32Xuxue Feng
1036James ButtIndia2026-04-14Chanay, Jeffrey A Esq RENEWAL77Xuxue Feng
1037Antonio CaudyItaly2026-04-09Chemel, James L Cpa QUALIFIED64Xuxue Feng
1038Johnson SergiCanada2026-04-13Buckley Miller Wright NEW95Amy Elsner
1039Mujtaba NickaArgentina2026-04-18Chanay, Jeffrey A Esq QUALIFIED42Onyama Limba
1040Arvin AlbaresFrance2026-03-29Feltz Printing Service RENEWAL32Ivan Magalhaes
1041Tony FollerFrance2026-04-05Commercial Press NEW39Ioni Bowcher
1042Murillo MaletUnited Kingdom2026-04-05Chemel, James L Cpa NEGOTIATION8Anna Fali
1043Tony FollerAustralia2026-03-28Rousseaux, Michael Esq NEW55Onyama Limba
1044Ricardo GauchoArgentina2026-04-19Benton, John B Jr QUALIFIED97Bernardo Dominic
1045Izzy GarufiArgentina2026-04-11Truhlar And Truhlar Attys NEW83Bernardo Dominic
1046Alejandro PerinSpain2026-03-30Dorl, James J Esq NEGOTIATION78Anna Fali
1047Mayumi KolmetzSpain2026-04-18Truhlar And Truhlar Attys NEGOTIATION32Onyama Limba
1048Julie StensethAustralia2026-03-31Printing Dimensions PROPOSAL70Asiya Javayant
1049Tony FollerItaly2026-03-31Benton, John B Jr UNQUALIFIED33Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Kaitlin OstroskySpainStephen Shaw PROPOSAL
Maria MarrierSpainIoni Bowcher UNQUALIFIED
Octavia MaletFranceXuxue Feng NEW
Kaitlin OstroskyUnited KingdomOnyama Limba QUALIFIED
Stacey MacleadUnited KingdomElwin Sharvill NEW
Kadeem FlosiItalyAnna Fali UNQUALIFIED
Ivar PaprockiSpainOnyama Limba PROPOSAL
Rodrigues CampainGermanyStephen Shaw RENEWAL
Deepesh ChuiGermanyElwin Sharvill RENEWAL
James ButtAustraliaAnna Fali NEW
Kaitlin OstroskyArgentinaAmy Elsner QUALIFIED
Aruna FigeroaUnited KingdomBernardo Dominic UNQUALIFIED
Izzy GarufiJapanIoni Bowcher RENEWAL
Aditya KuskoArgentinaElwin Sharvill RENEWAL
Leja CaldareraJapanXuxue Feng NEGOTIATION
Ivar PaprockiGermanyBernardo Dominic RENEWAL
James ButtGermanyStephen Shaw QUALIFIED
Maria MarrierFranceIoni Bowcher NEW
James ButtAustraliaElwin Sharvill NEGOTIATION
Wickens NestleRussiaIoni Bowcher PROPOSAL
Antonio CaudyFranceBernardo Dominic NEW
Julie StensethFranceElwin Sharvill QUALIFIED
Johnson SergiCanadaBernardo Dominic NEGOTIATION
Clifford RimBrazilAsiya Javayant QUALIFIED
James ButtGermanyElwin Sharvill UNQUALIFIED
Emily WhobreyFranceElwin Sharvill RENEWAL
Adams MorascaArgentinaAnna Fali PROPOSAL
Kaitlin OstroskyBrazilIoni Bowcher QUALIFIED
Murillo MaletBrazilAnna Fali QUALIFIED
Juan WieserCanadaAsiya Javayant RENEWAL
Rodrigues CampainAustraliaXuxue Feng PROPOSAL
Smith GlickIndiaIvan Magalhaes NEGOTIATION
Juan WieserRussiaIoni Bowcher NEGOTIATION
Arvin AlbaresRussiaStephen Shaw NEGOTIATION
Arvin AlbaresUnited KingdomXuxue Feng NEGOTIATION
David DarakjyArgentinaIvan Magalhaes NEW
Claire TollnerRussiaStephen Shaw PROPOSAL
Sinclair WaycottUnited KingdomStephen Shaw QUALIFIED
Rodrigues CampainCanadaAsiya Javayant QUALIFIED
Francesco ShinkoBrazilIoni Bowcher NEW
Darci PoquetteGermanyOnyama Limba UNQUALIFIED
Munro FerenczCanadaOnyama Limba NEW
Maria MarrierBrazilIvan Magalhaes NEGOTIATION
David DarakjyCanadaBernardo Dominic NEW
Izzy GarufiIndiaStephen Shaw RENEWAL
Kaitlin OstroskyIndiaAsiya Javayant NEGOTIATION
Leon OldroydAustraliaIvan Magalhaes RENEWAL
Greenwood BologniaArgentinaElwin Sharvill RENEWAL
Rodrigues CampainCanadaBernardo Dominic RENEWAL
Isabel BowleyAustraliaAsiya Javayant QUALIFIED
Frozen Columns
Name
Claire Tollner
Kadeem Flosi
Maria Marrier
Jennifer Amigon
Antonio Caudy
Mayumi Kolmetz
Ricardo Gaucho
Darci Poquette
Maria Marrier
Alejandro Perin
David Darakjy
Ivar Paprocki
Kaitlin Ostrosky
Stacey Maclead
Antonio Caudy
Mayumi Kolmetz
Mujtaba Nicka
Aruna Figeroa
Aika Inouye
Aika Inouye
Aruna Figeroa
Sinclair Waycott
Deepesh Chui
Emily Whobrey
Deepesh Chui
Izzy Garufi
Ricardo Gaucho
Ricardo Gaucho
Nicolas Iturbide
Murillo Malet
Rodrigues Campain
Jones Vocelka
Ivar Paprocki
Alejandro Perin
Cody Saylors
Faith Gillian
Adams Morasca
Aruna Figeroa
James Butt
Leja Caldarera
Ricardo Gaucho
Salvatore Stockham
Izzy Garufi
Jones Vocelka
Clifford Rim
Alejandro Perin
Kadeem Flosi
Mujtaba Nicka
Costa Dilliard
Salvatore Stockham
IdCountryDate
1000Argentina2026-04-03
1001Russia2026-04-14
1002United Kingdom2026-04-16
1003Brazil2026-04-19
1004Japan2026-04-23
1005Spain2026-03-26
1006France2026-03-29
1007Australia2026-04-14
1008Russia2026-03-25
1009France2026-03-27
1010Germany2026-04-07
1011India2026-04-02
1012France2026-03-29
1013France2026-04-23
1014Italy2026-04-23
1015Italy2026-04-13
1016Australia2026-04-19
1017Germany2026-04-06
1018Russia2026-04-10
1019Australia2026-04-23
1020Germany2026-04-08
1021Brazil2026-03-30
1022Australia2026-04-02
1023Germany2026-04-17
1024United Kingdom2026-03-26
1025Italy2026-03-29
1026United Kingdom2026-04-04
1027Canada2026-04-01
1028Canada2026-04-02
1029Canada2026-04-13
1030Germany2026-03-28
1031India2026-04-18
1032Argentina2026-04-16
1033Russia2026-04-13
1034Canada2026-04-04
1035Italy2026-04-06
1036Italy2026-03-28
1037Spain2026-04-17
1038Spain2026-04-14
1039France2026-04-05
1040Australia2026-04-14
1041Italy2026-04-11
1042United Kingdom2026-04-16
1043France2026-03-31
1044France2026-04-04
1045Italy2026-04-01
1046France2026-04-16
1047Russia2026-04-01
1048Argentina2026-04-10
1049United Kingdom2026-03-27

On-Demand Data

NameIdCountryDate
Stacey Maclead1000India2026-04-11
Darci Poquette1001Australia2026-04-21
Kadeem Flosi1002Brazil2026-04-08
Maisha Rulapaugh1003Russia2026-04-05
Francesco Shinko1004India2026-04-09
Deepesh Chui1005Argentina2026-04-13
Stacey Maclead1006Germany2026-04-07
Murillo Malet1007France2026-04-05
Mujtaba Nicka1008Russia2026-04-01
Costa Dilliard1009India2026-04-02
Aruna Figeroa1010Russia2026-04-21
Darci Poquette1011Brazil2026-03-30
Misaki Royster1012Canada2026-04-21
Silvio Slusarski1013Brazil2026-04-20
Jennifer Amigon1014Italy2026-04-21
Juan Wieser1015France2026-04-12
Maria Marrier1016France2026-04-01
Maisha Rulapaugh1017Argentina2026-04-19
Antonio Caudy1018Australia2026-04-06
Munro Ferencz1019Spain2026-04-03
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Greenwood BologniaIndiaIoni Bowcher UNQUALIFIED
Stacey MacleadAustraliaAmy Elsner RENEWAL
Leon OldroydUnited KingdomOnyama Limba UNQUALIFIED
Mayumi KolmetzRussiaIvan Magalhaes RENEWAL
Arvin AlbaresRussiaStephen Shaw NEGOTIATION
Cody SaylorsAustraliaXuxue Feng NEW
Morrow RutaJapanBernardo Dominic NEGOTIATION
Tony FollerItalyXuxue Feng NEGOTIATION
Jefferson SchemmerJapanIvan Magalhaes NEW
Kaitlin OstroskyIndiaElwin Sharvill UNQUALIFIED
Greenwood BologniaSpainAmy Elsner NEGOTIATION
Salvatore StockhamBrazilIvan Magalhaes QUALIFIED
Nicolas IturbideCanadaIvan Magalhaes PROPOSAL
Leja CaldareraCanadaIvan Magalhaes RENEWAL
Maisha RulapaughGermanyXuxue Feng NEW
Murillo MaletItalyOnyama Limba NEGOTIATION
Misaki RoysterBrazilIvan Magalhaes NEW
Antonio CaudyRussiaAsiya Javayant UNQUALIFIED
Adams MorascaFranceIoni Bowcher PROPOSAL
Faith GillianBrazilAnna Fali QUALIFIED
Jefferson SchemmerRussiaOnyama Limba NEW
Munro FerenczAustraliaIoni Bowcher NEW
Leja CaldareraBrazilAmy Elsner RENEWAL
Octavia MaletSpainBernardo Dominic PROPOSAL
Alejandro PerinJapanAsiya Javayant UNQUALIFIED
Chavez BriddickGermanyAnna Fali RENEWAL
Sinclair WaycottGermanyAnna Fali RENEWAL
Deepesh ChuiRussiaStephen Shaw UNQUALIFIED
Claire TollnerItalyIvan Magalhaes RENEWAL
Darci PoquetteArgentinaStephen Shaw UNQUALIFIED
Murillo MaletItalyElwin Sharvill NEW
Isabel BowleyRussiaIoni Bowcher UNQUALIFIED
Aruna FigeroaRussiaStephen Shaw RENEWAL
Sinclair WaycottAustraliaAmy Elsner PROPOSAL
Adams MorascaSpainOnyama Limba RENEWAL
Stacey MacleadIndiaIoni Bowcher NEGOTIATION
Munro FerenczJapanElwin Sharvill PROPOSAL
Sinclair WaycottUnited KingdomBernardo Dominic RENEWAL
Jeanfrancois VenereJapanAnna Fali NEGOTIATION
Maisha RulapaughUnited KingdomBernardo Dominic 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>