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
Misaki RoysterRussiaStephen Shaw RENEWAL
Tony FollerFranceAsiya Javayant NEGOTIATION
Maisha RulapaughGermanyOnyama Limba QUALIFIED
Chavez BriddickUnited KingdomAsiya Javayant QUALIFIED
Ashley DoeArgentinaAnna Fali RENEWAL
Aruna FigeroaItalyIoni Bowcher UNQUALIFIED
Kaitlin OstroskyGermanyBernardo Dominic RENEWAL
Maria MarrierFranceBernardo Dominic PROPOSAL
Faith GillianCanadaBernardo Dominic UNQUALIFIED
Aditya KuskoItalyAnna Fali NEGOTIATION
Maisha RulapaughUnited KingdomIvan Magalhaes QUALIFIED
Rodrigues CampainFranceAnna Fali NEW
Stacey MacleadJapanElwin Sharvill QUALIFIED
Leon OldroydCanadaAmy Elsner RENEWAL
Arvin AlbaresBrazilElwin Sharvill UNQUALIFIED
Ivar PaprockiRussiaStephen Shaw PROPOSAL
Maria MarrierGermanyXuxue Feng PROPOSAL
Kadeem FlosiAustraliaXuxue Feng UNQUALIFIED
Antonio CaudySpainAsiya Javayant NEW
Morrow RutaCanadaAnna Fali UNQUALIFIED
Cody SaylorsItalyXuxue Feng NEW
Claire TollnerUnited KingdomAnna Fali NEGOTIATION
Smith GlickSpainAmy Elsner UNQUALIFIED
Deepesh ChuiUnited KingdomXuxue Feng UNQUALIFIED
Salvatore StockhamArgentinaAmy Elsner NEGOTIATION
Smith GlickAustraliaAmy Elsner QUALIFIED
Adams MorascaUnited KingdomStephen Shaw PROPOSAL
Stacey MacleadGermanyIvan Magalhaes RENEWAL
Francesco ShinkoRussiaOnyama Limba PROPOSAL
Emily WhobreyUnited KingdomAmy Elsner NEGOTIATION
James ButtAustraliaXuxue Feng NEGOTIATION
Nicolas IturbideItalyIvan Magalhaes NEW
Alejandro PerinRussiaAnna Fali QUALIFIED
Maisha RulapaughArgentinaAmy Elsner QUALIFIED
Silvio SlusarskiUnited KingdomAsiya Javayant NEW
Isabel BowleyJapanOnyama Limba NEGOTIATION
Greenwood BologniaFranceIvan Magalhaes QUALIFIED
Nicolas IturbideJapanAnna Fali NEW
Deepesh ChuiGermanyXuxue Feng QUALIFIED
Aruna FigeroaRussiaStephen Shaw NEGOTIATION
Murillo MaletIndiaXuxue Feng NEGOTIATION
Chavez BriddickSpainElwin Sharvill UNQUALIFIED
David DarakjySpainElwin Sharvill NEW
Maria MarrierGermanyAsiya Javayant RENEWAL
Kadeem FlosiSpainIvan Magalhaes RENEWAL
Izzy GarufiJapanXuxue Feng RENEWAL
Johnson SergiRussiaElwin Sharvill NEGOTIATION
Maisha RulapaughArgentinaOnyama Limba RENEWAL
Jeanfrancois VenereRussiaAnna Fali PROPOSAL
Smith GlickCanadaBernardo Dominic RENEWAL
Horizontal
NameCountryRepresentativeStatus
Juan WieserCanadaAmy Elsner RENEWAL
Morrow RutaGermanyElwin Sharvill RENEWAL
Stacey MacleadItalyIvan Magalhaes NEW
Aruna FigeroaAustraliaIvan Magalhaes QUALIFIED
Costa DilliardRussiaBernardo Dominic NEGOTIATION
Arvin AlbaresSpainIvan Magalhaes NEGOTIATION
Deepesh ChuiArgentinaAnna Fali RENEWAL
Cody SaylorsUnited KingdomAnna Fali PROPOSAL
Aika InouyeBrazilIvan Magalhaes NEGOTIATION
Leja CaldareraSpainIoni Bowcher PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Morrow RutaFrance2026-03-30Feltz Printing Service PROPOSAL23Asiya Javayant
1001Antonio CaudyGermany2026-04-09Morlong Associates RENEWAL77Elwin Sharvill
1002Silvio SlusarskiItaly2026-04-18Rousseaux, Michael Esq RENEWAL24Bernardo Dominic
1003Wickens NestleRussia2026-04-05Buckley Miller Wright RENEWAL99Ivan Magalhaes
1004Nicolas IturbideIndia2026-04-04Chemel, James L Cpa RENEWAL23Ivan Magalhaes
1005Jennifer AmigonCanada2026-04-13Chanay, Jeffrey A Esq UNQUALIFIED9Anna Fali
1006Emily WhobreyGermany2026-03-27Dorl, James J Esq QUALIFIED65Ivan Magalhaes
1007Jefferson SchemmerItaly2026-03-30Commercial Press QUALIFIED90Anna Fali
1008Greenwood BologniaItaly2026-03-25Benton, John B Jr PROPOSAL51Anna Fali
1009Sinclair WaycottRussia2026-04-02Feltz Printing Service QUALIFIED78Asiya Javayant
1010Julie StensethBrazil2026-03-29Chanay, Jeffrey A Esq RENEWAL75Elwin Sharvill
1011Izzy GarufiArgentina2026-03-28Chapman, Ross E Esq QUALIFIED9Stephen Shaw
1012Costa DilliardUnited Kingdom2026-03-22Truhlar And Truhlar Attys NEGOTIATION38Bernardo Dominic
1013Leon OldroydItaly2026-04-12Commercial Press NEW57Stephen Shaw
1014Juan WieserUnited Kingdom2026-03-22Benton, John B Jr NEGOTIATION28Amy Elsner
1015Morrow RutaItaly2026-04-02Feiner Bros RENEWAL19Anna Fali
1016Kaitlin OstroskyRussia2026-04-18Truhlar And Truhlar Attys NEW6Bernardo Dominic
1017Ricardo GauchoGermany2026-03-23Feltz Printing Service QUALIFIED7Ioni Bowcher
1018Francesco ShinkoFrance2026-04-17Rangoni Of Florence RENEWAL18Stephen Shaw
1019Claire TollnerArgentina2026-04-18Truhlar And Truhlar Attys UNQUALIFIED88Xuxue Feng
1020Adams MorascaSpain2026-04-05Morlong Associates NEGOTIATION3Xuxue Feng
1021Leon OldroydFrance2026-03-27Chemel, James L Cpa UNQUALIFIED77Xuxue Feng
1022Salvatore StockhamBrazil2026-03-26Rousseaux, Michael Esq QUALIFIED2Anna Fali
1023Wickens NestleItaly2026-04-02Rousseaux, Michael Esq NEGOTIATION33Xuxue Feng
1024Wickens NestleUnited Kingdom2026-04-15King, Christopher A Esq QUALIFIED69Amy Elsner
1025Murillo MaletIndia2026-03-27Feiner Bros RENEWAL99Ivan Magalhaes
1026Jeanfrancois VenereCanada2026-03-28Feltz Printing Service QUALIFIED53Anna Fali
1027Jennifer AmigonUnited Kingdom2026-04-14Chanay, Jeffrey A Esq PROPOSAL63Anna Fali
1028Juan WieserSpain2026-04-01Printing Dimensions RENEWAL60Ioni Bowcher
1029Darci PoquetteGermany2026-04-06Commercial Press UNQUALIFIED33Ioni Bowcher
1030Johnson SergiAustralia2026-03-31Rousseaux, Michael Esq RENEWAL51Asiya Javayant
1031Jefferson SchemmerFrance2026-04-02King, Christopher A Esq UNQUALIFIED17Ioni Bowcher
1032Costa DilliardCanada2026-03-23Chapman, Ross E Esq RENEWAL67Ivan Magalhaes
1033Nicolas IturbideRussia2026-04-09Truhlar And Truhlar Attys RENEWAL29Bernardo Dominic
1034Sinclair WaycottIndia2026-04-12Printing Dimensions PROPOSAL53Xuxue Feng
1035Deepesh ChuiGermany2026-04-15Chanay, Jeffrey A Esq RENEWAL19Bernardo Dominic
1036Emily WhobreyIndia2026-04-01Truhlar And Truhlar Attys QUALIFIED51Ioni Bowcher
1037Nicolas IturbideIndia2026-04-15Dorl, James J Esq NEGOTIATION33Anna Fali
1038Alejandro PerinItaly2026-04-06Rangoni Of Florence UNQUALIFIED36Anna Fali
1039Munro FerenczGermany2026-03-31Morlong Associates PROPOSAL30Amy Elsner
1040Wickens NestleIndia2026-04-14Printing Dimensions QUALIFIED36Xuxue Feng
1041Clifford RimUnited Kingdom2026-04-11Benton, John B Jr QUALIFIED6Elwin Sharvill
1042Munro FerenczUnited Kingdom2026-03-31Feltz Printing Service PROPOSAL47Asiya Javayant
1043Morrow RutaCanada2026-04-08Chapman, Ross E Esq NEGOTIATION64Ivan Magalhaes
1044Faith GillianUnited Kingdom2026-04-12Rousseaux, Michael Esq NEW75Amy Elsner
1045Leon OldroydFrance2026-04-06Morlong Associates UNQUALIFIED98Elwin Sharvill
1046Francesco ShinkoJapan2026-04-05Feiner Bros NEW40Anna Fali
1047Johnson SergiGermany2026-04-15Feiner Bros RENEWAL36Stephen Shaw
1048Jeanfrancois VenereBrazil2026-03-27Truhlar And Truhlar Attys NEGOTIATION54Bernardo Dominic
1049Morrow RutaAustralia2026-03-28Dorl, James J Esq NEGOTIATION21Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Rodrigues CampainRussiaXuxue Feng UNQUALIFIED
Johnson SergiItalyOnyama Limba QUALIFIED
Munro FerenczAustraliaIoni Bowcher QUALIFIED
Sinclair WaycottArgentinaStephen Shaw NEW
Salvatore StockhamFranceAsiya Javayant NEW
Arvin AlbaresSpainIvan Magalhaes QUALIFIED
Chavez BriddickCanadaIvan Magalhaes NEW
Silvio SlusarskiItalyAnna Fali QUALIFIED
Octavia MaletBrazilXuxue Feng NEW
Deepesh ChuiItalyIvan Magalhaes UNQUALIFIED
Stacey MacleadFranceIoni Bowcher NEW
Maisha RulapaughGermanyAnna Fali QUALIFIED
Izzy GarufiBrazilBernardo Dominic QUALIFIED
Kaitlin OstroskyIndiaOnyama Limba PROPOSAL
Tony FollerIndiaXuxue Feng UNQUALIFIED
Jeanfrancois VenereRussiaOnyama Limba NEW
Ashley DoeUnited KingdomBernardo Dominic PROPOSAL
Tony FollerIndiaBernardo Dominic NEW
Morrow RutaCanadaIoni Bowcher UNQUALIFIED
Kaitlin OstroskyCanadaOnyama Limba QUALIFIED
Misaki RoysterAustraliaIvan Magalhaes NEGOTIATION
Izzy GarufiAustraliaAnna Fali UNQUALIFIED
Mujtaba NickaArgentinaElwin Sharvill NEW
Greenwood BologniaFranceIoni Bowcher RENEWAL
Ivar PaprockiCanadaStephen Shaw QUALIFIED
Jefferson SchemmerRussiaAnna Fali NEW
Munro FerenczFranceOnyama Limba RENEWAL
Julie StensethUnited KingdomXuxue Feng NEW
Munro FerenczItalyAnna Fali NEGOTIATION
Mayumi KolmetzJapanIvan Magalhaes PROPOSAL
Isabel BowleyGermanyBernardo Dominic NEW
Deepesh ChuiBrazilXuxue Feng RENEWAL
Greenwood BologniaBrazilAnna Fali NEGOTIATION
Chavez BriddickCanadaIoni Bowcher RENEWAL
Juan WieserIndiaOnyama Limba NEGOTIATION
Misaki RoysterArgentinaAnna Fali QUALIFIED
Darci PoquetteItalyIoni Bowcher NEGOTIATION
Aika InouyeCanadaElwin Sharvill PROPOSAL
Rodrigues CampainBrazilElwin Sharvill NEGOTIATION
Julie StensethArgentinaXuxue Feng QUALIFIED
Jeanfrancois VenereItalyIvan Magalhaes NEGOTIATION
Arvin AlbaresItalyXuxue Feng NEW
Aruna FigeroaIndiaStephen Shaw QUALIFIED
Leon OldroydUnited KingdomIoni Bowcher UNQUALIFIED
Smith GlickGermanyAsiya Javayant UNQUALIFIED
Sinclair WaycottItalyStephen Shaw PROPOSAL
Adams MorascaArgentinaAnna Fali RENEWAL
Wickens NestleArgentinaXuxue Feng UNQUALIFIED
Clifford RimArgentinaXuxue Feng RENEWAL
Chavez BriddickFranceAsiya Javayant PROPOSAL
Frozen Columns
Name
Wickens Nestle
Izzy Garufi
Octavia Malet
Claire Tollner
Aruna Figeroa
Leja Caldarera
Jefferson Schemmer
Cody Saylors
Clifford Rim
Greenwood Bolognia
Aika Inouye
Julie Stenseth
Rodrigues Campain
Costa Dilliard
Darci Poquette
Mujtaba Nicka
Jones Vocelka
Faith Gillian
James Butt
Stacey Maclead
Misaki Royster
Wickens Nestle
Izzy Garufi
Julie Stenseth
Silvio Slusarski
Kaitlin Ostrosky
Leja Caldarera
Johnson Sergi
Leja Caldarera
Smith Glick
Costa Dilliard
Darci Poquette
Aruna Figeroa
Mayumi Kolmetz
Aruna Figeroa
David Darakjy
Deepesh Chui
Clifford Rim
Murillo Malet
Leon Oldroyd
Arvin Albares
Mayumi Kolmetz
Faith Gillian
Rodrigues Campain
Leja Caldarera
Emily Whobrey
Adams Morasca
Alejandro Perin
Julie Stenseth
Jennifer Amigon
IdCountryDate
1000Brazil2026-03-26
1001Australia2026-04-05
1002Brazil2026-03-21
1003Canada2026-04-10
1004Canada2026-03-31
1005France2026-04-15
1006Italy2026-03-29
1007Italy2026-03-30
1008Australia2026-04-06
1009Italy2026-03-21
1010Japan2026-04-11
1011Japan2026-03-22
1012Canada2026-03-21
1013France2026-03-21
1014Italy2026-04-02
1015Canada2026-04-10
1016India2026-04-12
1017Argentina2026-03-27
1018Spain2026-03-30
1019Italy2026-04-08
1020Canada2026-03-20
1021France2026-04-07
1022Japan2026-03-25
1023India2026-04-01
1024Australia2026-04-14
1025Japan2026-04-01
1026Italy2026-04-03
1027Italy2026-04-14
1028Canada2026-04-16
1029Australia2026-04-16
1030India2026-03-30
1031Brazil2026-03-23
1032France2026-04-12
1033Germany2026-04-04
1034Italy2026-04-12
1035Canada2026-03-24
1036Australia2026-03-24
1037Canada2026-04-05
1038France2026-04-11
1039Brazil2026-03-27
1040Japan2026-04-13
1041Germany2026-04-15
1042India2026-03-25
1043Japan2026-04-04
1044India2026-04-18
1045Brazil2026-03-31
1046United Kingdom2026-04-07
1047Japan2026-04-01
1048Spain2026-04-08
1049France2026-04-10

On-Demand Data

NameIdCountryDate
Faith Gillian1000Argentina2026-03-27
Darci Poquette1001Argentina2026-03-22
Darci Poquette1002Germany2026-03-21
Cody Saylors1003France2026-03-27
Claire Tollner1004Brazil2026-03-21
Nicolas Iturbide1005Germany2026-04-15
Ivar Paprocki1006Canada2026-03-26
Deepesh Chui1007Germany2026-04-05
Darci Poquette1008Argentina2026-03-20
Kaitlin Ostrosky1009France2026-03-29
Antonio Caudy1010Spain2026-04-10
Isabel Bowley1011Argentina2026-03-24
Kadeem Flosi1012France2026-03-23
Jennifer Amigon1013Brazil2026-04-12
Cody Saylors1014Spain2026-03-20
Faith Gillian1015Brazil2026-03-28
Alejandro Perin1016Canada2026-04-16
Costa Dilliard1017United Kingdom2026-04-09
Adams Morasca1018Canada2026-03-29
Nicolas Iturbide1019United Kingdom2026-04-11
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Deepesh ChuiJapanOnyama Limba NEGOTIATION
Johnson SergiSpainIoni Bowcher QUALIFIED
Nicolas IturbideCanadaStephen Shaw UNQUALIFIED
Johnson SergiGermanyBernardo Dominic PROPOSAL
Clifford RimCanadaIvan Magalhaes UNQUALIFIED
Faith GillianUnited KingdomAmy Elsner UNQUALIFIED
James ButtRussiaXuxue Feng RENEWAL
Morrow RutaCanadaElwin Sharvill NEGOTIATION
Jefferson SchemmerItalyXuxue Feng NEW
Maria MarrierBrazilStephen Shaw RENEWAL
Stacey MacleadGermanyAnna Fali NEGOTIATION
Francesco ShinkoRussiaBernardo Dominic QUALIFIED
Morrow RutaBrazilAsiya Javayant QUALIFIED
Mayumi KolmetzCanadaXuxue Feng UNQUALIFIED
Adams MorascaBrazilXuxue Feng QUALIFIED
David DarakjySpainBernardo Dominic QUALIFIED
Salvatore StockhamFranceOnyama Limba NEW
Greenwood BologniaSpainAsiya Javayant PROPOSAL
Jones VocelkaAustraliaElwin Sharvill PROPOSAL
Tony FollerArgentinaIvan Magalhaes UNQUALIFIED
Faith GillianUnited KingdomIvan Magalhaes NEGOTIATION
Jefferson SchemmerJapanXuxue Feng PROPOSAL
Jeanfrancois VenereGermanyBernardo Dominic NEGOTIATION
Kaitlin OstroskyRussiaStephen Shaw NEW
Leon OldroydJapanElwin Sharvill PROPOSAL
Maisha RulapaughJapanStephen Shaw PROPOSAL
Smith GlickFranceIvan Magalhaes UNQUALIFIED
Kadeem FlosiCanadaOnyama Limba NEGOTIATION
Greenwood BologniaUnited KingdomStephen Shaw PROPOSAL
Maria MarrierCanadaAmy Elsner PROPOSAL
Aruna FigeroaBrazilIvan Magalhaes QUALIFIED
Jennifer AmigonCanadaOnyama Limba NEGOTIATION
Rodrigues CampainIndiaStephen Shaw QUALIFIED
Wickens NestleGermanyOnyama Limba RENEWAL
Jones VocelkaAustraliaAsiya Javayant QUALIFIED
Jefferson SchemmerUnited KingdomIvan Magalhaes RENEWAL
Wickens NestleFranceStephen Shaw NEW
Munro FerenczGermanyAmy Elsner RENEWAL
Silvio SlusarskiJapanAmy Elsner NEW
Aika InouyeJapanIoni Bowcher UNQUALIFIED

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