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
Kadeem FlosiSpainAmy Elsner RENEWAL
Smith GlickItalyAnna Fali NEW
Jennifer AmigonSpainAnna Fali PROPOSAL
Aruna FigeroaItalyBernardo Dominic NEW
Faith GillianUnited KingdomElwin Sharvill QUALIFIED
Mayumi KolmetzIndiaAnna Fali NEGOTIATION
Murillo MaletIndiaAnna Fali UNQUALIFIED
Jennifer AmigonJapanIvan Magalhaes RENEWAL
Johnson SergiJapanAsiya Javayant UNQUALIFIED
Emily WhobreyGermanyIvan Magalhaes NEW
Maria MarrierArgentinaElwin Sharvill NEW
Darci PoquetteFranceAnna Fali NEGOTIATION
Adams MorascaJapanAnna Fali RENEWAL
Emily WhobreySpainIoni Bowcher RENEWAL
Arvin AlbaresGermanyAmy Elsner NEW
Salvatore StockhamSpainIvan Magalhaes NEW
Jennifer AmigonAustraliaIvan Magalhaes PROPOSAL
Aditya KuskoRussiaXuxue Feng PROPOSAL
Rodrigues CampainArgentinaIoni Bowcher UNQUALIFIED
Leon OldroydItalyOnyama Limba QUALIFIED
Ivar PaprockiIndiaBernardo Dominic NEW
Darci PoquetteBrazilElwin Sharvill NEW
Aika InouyeFranceIvan Magalhaes RENEWAL
Kaitlin OstroskyItalyAnna Fali UNQUALIFIED
Claire TollnerRussiaAsiya Javayant NEW
Maria MarrierRussiaElwin Sharvill RENEWAL
Octavia MaletRussiaAnna Fali UNQUALIFIED
Rodrigues CampainJapanAnna Fali UNQUALIFIED
Isabel BowleySpainOnyama Limba UNQUALIFIED
Jefferson SchemmerRussiaBernardo Dominic RENEWAL
Rodrigues CampainArgentinaXuxue Feng NEGOTIATION
Claire TollnerFranceAnna Fali QUALIFIED
Octavia MaletAustraliaAnna Fali RENEWAL
Kaitlin OstroskyUnited KingdomBernardo Dominic RENEWAL
Maisha RulapaughIndiaBernardo Dominic PROPOSAL
Tony FollerSpainAsiya Javayant NEGOTIATION
Greenwood BologniaIndiaOnyama Limba PROPOSAL
Ricardo GauchoCanadaStephen Shaw NEW
Greenwood BologniaGermanyOnyama Limba NEW
Murillo MaletRussiaStephen Shaw NEGOTIATION
Jeanfrancois VenereRussiaXuxue Feng PROPOSAL
Mayumi KolmetzFranceBernardo Dominic PROPOSAL
Deepesh ChuiRussiaXuxue Feng QUALIFIED
Kaitlin OstroskyIndiaBernardo Dominic RENEWAL
Aika InouyeCanadaStephen Shaw PROPOSAL
Morrow RutaRussiaAmy Elsner QUALIFIED
Munro FerenczAustraliaElwin Sharvill NEGOTIATION
Smith GlickSpainBernardo Dominic NEGOTIATION
Ashley DoeAustraliaBernardo Dominic UNQUALIFIED
Kaitlin OstroskyUnited KingdomIoni Bowcher RENEWAL
Horizontal
NameCountryRepresentativeStatus
Kaitlin OstroskyArgentinaElwin Sharvill UNQUALIFIED
Darci PoquetteUnited KingdomXuxue Feng PROPOSAL
Maisha RulapaughIndiaElwin Sharvill PROPOSAL
Leja CaldareraUnited KingdomAnna Fali RENEWAL
Cody SaylorsJapanIoni Bowcher NEW
Greenwood BologniaRussiaBernardo Dominic NEGOTIATION
Aruna FigeroaGermanyBernardo Dominic UNQUALIFIED
Aruna FigeroaCanadaIoni Bowcher NEW
Juan WieserRussiaElwin Sharvill PROPOSAL
Chavez BriddickRussiaAmy Elsner NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Misaki RoysterSpain2026-04-23Morlong Associates QUALIFIED6Ivan Magalhaes
1001Cody SaylorsRussia2026-04-20Feiner Bros NEW74Anna Fali
1002Morrow RutaFrance2026-04-22Chapman, Ross E Esq RENEWAL36Xuxue Feng
1003Alejandro PerinUnited Kingdom2026-04-14Dorl, James J Esq NEGOTIATION96Anna Fali
1004David DarakjySpain2026-04-16Rangoni Of Florence NEGOTIATION99Bernardo Dominic
1005Silvio SlusarskiJapan2026-05-03Dorl, James J Esq NEW60Ioni Bowcher
1006Darci PoquetteAustralia2026-04-11Rousseaux, Michael Esq PROPOSAL81Ioni Bowcher
1007Arvin AlbaresSpain2026-04-12Buckley Miller Wright NEGOTIATION98Ioni Bowcher
1008Isabel BowleyUnited Kingdom2026-05-01Feltz Printing Service NEW47Stephen Shaw
1009Juan WieserBrazil2026-05-10Buckley Miller Wright QUALIFIED98Xuxue Feng
1010Jeanfrancois VenereAustralia2026-04-15King, Christopher A Esq UNQUALIFIED47Amy Elsner
1011Mayumi KolmetzCanada2026-04-21Truhlar And Truhlar Attys QUALIFIED33Anna Fali
1012Jones VocelkaCanada2026-04-22King, Christopher A Esq NEW93Stephen Shaw
1013Adams MorascaItaly2026-04-27Buckley Miller Wright PROPOSAL54Onyama Limba
1014Faith GillianGermany2026-04-12Buckley Miller Wright NEGOTIATION2Bernardo Dominic
1015Jennifer AmigonSpain2026-04-26Benton, John B Jr NEGOTIATION92Xuxue Feng
1016Ashley DoeGermany2026-04-26Feiner Bros RENEWAL79Amy Elsner
1017Chavez BriddickGermany2026-05-04Commercial Press UNQUALIFIED68Stephen Shaw
1018Jones VocelkaGermany2026-05-06Feiner Bros PROPOSAL35Bernardo Dominic
1019Adams MorascaSpain2026-04-30Feiner Bros RENEWAL41Xuxue Feng
1020Sinclair WaycottRussia2026-04-20Morlong Associates PROPOSAL14Xuxue Feng
1021Ashley DoeUnited Kingdom2026-04-19Rangoni Of Florence RENEWAL83Amy Elsner
1022Stacey MacleadAustralia2026-04-17Printing Dimensions RENEWAL65Asiya Javayant
1023Kaitlin OstroskyFrance2026-05-08Commercial Press QUALIFIED95Asiya Javayant
1024Kadeem FlosiSpain2026-04-12Chanay, Jeffrey A Esq NEGOTIATION43Ioni Bowcher
1025Tony FollerAustralia2026-04-12Truhlar And Truhlar Attys RENEWAL46Xuxue Feng
1026Faith GillianIndia2026-04-27Chanay, Jeffrey A Esq RENEWAL16Anna Fali
1027Juan WieserGermany2026-04-27Chapman, Ross E Esq PROPOSAL9Ivan Magalhaes
1028Antonio CaudyCanada2026-04-25Buckley Miller Wright PROPOSAL27Ioni Bowcher
1029Claire TollnerIndia2026-04-18Rangoni Of Florence NEGOTIATION89Amy Elsner
1030Izzy GarufiJapan2026-04-29King, Christopher A Esq PROPOSAL73Asiya Javayant
1031Antonio CaudyBrazil2026-05-02Rangoni Of Florence PROPOSAL92Elwin Sharvill
1032Leja CaldareraArgentina2026-04-30Commercial Press PROPOSAL91Ioni Bowcher
1033Mayumi KolmetzUnited Kingdom2026-04-23Buckley Miller Wright RENEWAL10Asiya Javayant
1034Rodrigues CampainIndia2026-04-26Feiner Bros NEW27Anna Fali
1035Octavia MaletUnited Kingdom2026-05-10Chapman, Ross E Esq NEGOTIATION5Asiya Javayant
1036Arvin AlbaresIndia2026-04-27Printing Dimensions QUALIFIED40Asiya Javayant
1037Kadeem FlosiRussia2026-05-10Feltz Printing Service UNQUALIFIED91Asiya Javayant
1038Ashley DoeFrance2026-04-27Rangoni Of Florence QUALIFIED51Ivan Magalhaes
1039Izzy GarufiItaly2026-04-14Commercial Press NEGOTIATION84Elwin Sharvill
1040Maisha RulapaughGermany2026-04-25Chapman, Ross E Esq RENEWAL95Onyama Limba
1041Murillo MaletItaly2026-04-25Benton, John B Jr UNQUALIFIED46Amy Elsner
1042Izzy GarufiBrazil2026-05-08Benton, John B Jr RENEWAL95Onyama Limba
1043Ashley DoeJapan2026-04-13Morlong Associates NEGOTIATION58Ivan Magalhaes
1044Jeanfrancois VenereItaly2026-04-19Chemel, James L Cpa NEGOTIATION22Ivan Magalhaes
1045Izzy GarufiItaly2026-05-06King, Christopher A Esq NEGOTIATION21Ivan Magalhaes
1046Costa DilliardAustralia2026-05-09Benton, John B Jr RENEWAL1Ivan Magalhaes
1047Morrow RutaUnited Kingdom2026-04-24Dorl, James J Esq NEW45Bernardo Dominic
1048Ashley DoeArgentina2026-05-04King, Christopher A Esq UNQUALIFIED13Amy Elsner
1049Adams MorascaUnited Kingdom2026-04-30Printing Dimensions NEGOTIATION21Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Kaitlin OstroskyFranceAnna Fali RENEWAL
Maisha RulapaughArgentinaIvan Magalhaes UNQUALIFIED
Johnson SergiAustraliaOnyama Limba UNQUALIFIED
Ivar PaprockiArgentinaStephen Shaw RENEWAL
Mayumi KolmetzIndiaXuxue Feng NEGOTIATION
David DarakjySpainStephen Shaw UNQUALIFIED
Leon OldroydRussiaXuxue Feng QUALIFIED
Mujtaba NickaRussiaElwin Sharvill NEGOTIATION
Aruna FigeroaSpainIoni Bowcher NEW
Claire TollnerBrazilAsiya Javayant UNQUALIFIED
Mujtaba NickaRussiaIoni Bowcher NEW
Claire TollnerArgentinaAnna Fali NEGOTIATION
Aruna FigeroaSpainStephen Shaw NEW
Clifford RimFranceAmy Elsner QUALIFIED
Francesco ShinkoArgentinaElwin Sharvill UNQUALIFIED
Mujtaba NickaSpainAnna Fali RENEWAL
Johnson SergiCanadaAsiya Javayant PROPOSAL
Emily WhobreySpainIoni Bowcher QUALIFIED
James ButtAustraliaXuxue Feng UNQUALIFIED
Stacey MacleadItalyBernardo Dominic PROPOSAL
Arvin AlbaresIndiaBernardo Dominic PROPOSAL
Kaitlin OstroskyGermanyIvan Magalhaes NEGOTIATION
Ashley DoeRussiaOnyama Limba QUALIFIED
Salvatore StockhamJapanXuxue Feng NEW
Sinclair WaycottAustraliaXuxue Feng NEGOTIATION
Kaitlin OstroskyGermanyElwin Sharvill RENEWAL
Jones VocelkaAustraliaElwin Sharvill QUALIFIED
Maisha RulapaughArgentinaOnyama Limba NEGOTIATION
Alejandro PerinItalyIoni Bowcher QUALIFIED
Jefferson SchemmerBrazilBernardo Dominic PROPOSAL
Darci PoquetteUnited KingdomXuxue Feng QUALIFIED
Mayumi KolmetzRussiaAnna Fali QUALIFIED
Alejandro PerinCanadaBernardo Dominic QUALIFIED
Emily WhobreyUnited KingdomOnyama Limba PROPOSAL
Cody SaylorsGermanyOnyama Limba PROPOSAL
Leja CaldareraBrazilElwin Sharvill NEW
Greenwood BologniaAustraliaAnna Fali QUALIFIED
Maisha RulapaughUnited KingdomAmy Elsner NEW
Nicolas IturbideSpainElwin Sharvill PROPOSAL
Wickens NestleArgentinaStephen Shaw QUALIFIED
Rodrigues CampainCanadaBernardo Dominic RENEWAL
Munro FerenczArgentinaElwin Sharvill NEGOTIATION
Leja CaldareraBrazilElwin Sharvill RENEWAL
Claire TollnerUnited KingdomOnyama Limba UNQUALIFIED
Jones VocelkaArgentinaStephen Shaw PROPOSAL
Misaki RoysterUnited KingdomAsiya Javayant QUALIFIED
Silvio SlusarskiCanadaIvan Magalhaes RENEWAL
Jefferson SchemmerIndiaAmy Elsner QUALIFIED
Sinclair WaycottFranceAsiya Javayant UNQUALIFIED
Deepesh ChuiIndiaIvan Magalhaes QUALIFIED
Frozen Columns
Name
Octavia Malet
Aditya Kusko
Misaki Royster
Darci Poquette
Maisha Rulapaugh
Faith Gillian
Maisha Rulapaugh
Murillo Malet
Mayumi Kolmetz
Chavez Briddick
Nicolas Iturbide
Isabel Bowley
Ivar Paprocki
Octavia Malet
Jennifer Amigon
Misaki Royster
Jennifer Amigon
Silvio Slusarski
Costa Dilliard
Misaki Royster
Salvatore Stockham
Jefferson Schemmer
Wickens Nestle
Aditya Kusko
Jeanfrancois Venere
Octavia Malet
Darci Poquette
Wickens Nestle
Murillo Malet
Mujtaba Nicka
Clifford Rim
Clifford Rim
Jefferson Schemmer
Izzy Garufi
Munro Ferencz
Munro Ferencz
Murillo Malet
Claire Tollner
Munro Ferencz
Darci Poquette
Tony Foller
Mayumi Kolmetz
Greenwood Bolognia
Silvio Slusarski
Nicolas Iturbide
Misaki Royster
Arvin Albares
Kaitlin Ostrosky
Leon Oldroyd
Jones Vocelka
IdCountryDate
1000United Kingdom2026-04-26
1001Italy2026-04-26
1002Canada2026-04-27
1003United Kingdom2026-05-06
1004Canada2026-04-30
1005Italy2026-05-07
1006United Kingdom2026-04-24
1007Spain2026-04-14
1008Argentina2026-04-15
1009Germany2026-04-22
1010France2026-04-19
1011Japan2026-04-30
1012Germany2026-04-12
1013Russia2026-05-04
1014Russia2026-04-24
1015Spain2026-04-25
1016India2026-04-22
1017Spain2026-04-30
1018Italy2026-04-17
1019Japan2026-04-19
1020Australia2026-04-15
1021Italy2026-05-05
1022Brazil2026-05-01
1023Russia2026-04-12
1024Russia2026-05-09
1025Russia2026-04-27
1026India2026-04-26
1027Spain2026-05-01
1028Germany2026-05-05
1029United Kingdom2026-04-21
1030Brazil2026-04-26
1031Russia2026-04-13
1032Russia2026-05-09
1033Australia2026-04-17
1034Australia2026-04-19
1035Brazil2026-04-27
1036Italy2026-05-09
1037Germany2026-05-09
1038Brazil2026-04-24
1039India2026-04-18
1040India2026-04-21
1041Brazil2026-04-18
1042France2026-04-30
1043Italy2026-04-16
1044Spain2026-04-12
1045Argentina2026-04-26
1046Australia2026-04-26
1047Japan2026-04-23
1048Russia2026-04-25
1049Japan2026-04-23

On-Demand Data

NameIdCountryDate
Leon Oldroyd1000Argentina2026-04-15
Juan Wieser1001Germany2026-04-11
Adams Morasca1002Argentina2026-05-08
Sinclair Waycott1003India2026-04-25
Munro Ferencz1004Japan2026-04-23
Emily Whobrey1005United Kingdom2026-05-08
Julie Stenseth1006India2026-04-24
Aika Inouye1007Argentina2026-04-22
Kaitlin Ostrosky1008India2026-04-27
Wickens Nestle1009United Kingdom2026-04-13
Costa Dilliard1010Australia2026-05-10
James Butt1011Spain2026-05-03
Salvatore Stockham1012Brazil2026-05-07
Silvio Slusarski1013Australia2026-04-30
Kadeem Flosi1014Russia2026-05-03
Jones Vocelka1015Italy2026-04-13
Sinclair Waycott1016India2026-04-22
Deepesh Chui1017India2026-05-09
Leja Caldarera1018India2026-04-27
Nicolas Iturbide1019Canada2026-04-29
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ashley DoeArgentinaAnna Fali QUALIFIED
Cody SaylorsArgentinaOnyama Limba NEGOTIATION
Ricardo GauchoFranceAsiya Javayant RENEWAL
Ivar PaprockiCanadaIoni Bowcher PROPOSAL
Chavez BriddickCanadaOnyama Limba RENEWAL
David DarakjyAustraliaStephen Shaw NEGOTIATION
Misaki RoysterItalyStephen Shaw NEW
Claire TollnerUnited KingdomIoni Bowcher QUALIFIED
Morrow RutaIndiaBernardo Dominic QUALIFIED
Salvatore StockhamGermanyAsiya Javayant NEGOTIATION
Munro FerenczJapanAmy Elsner UNQUALIFIED
Julie StensethBrazilIoni Bowcher RENEWAL
Darci PoquetteRussiaAsiya Javayant RENEWAL
Juan WieserBrazilAnna Fali NEGOTIATION
Ricardo GauchoSpainIoni Bowcher NEGOTIATION
Chavez BriddickGermanyAsiya Javayant QUALIFIED
Maria MarrierIndiaBernardo Dominic PROPOSAL
Arvin AlbaresUnited KingdomAmy Elsner NEW
Johnson SergiFranceIvan Magalhaes UNQUALIFIED
Salvatore StockhamAustraliaStephen Shaw RENEWAL
Salvatore StockhamCanadaAnna Fali UNQUALIFIED
Sinclair WaycottIndiaAsiya Javayant PROPOSAL
Faith GillianGermanyElwin Sharvill RENEWAL
Octavia MaletAustraliaAnna Fali RENEWAL
Murillo MaletGermanyStephen Shaw RENEWAL
Ashley DoeFranceIvan Magalhaes QUALIFIED
David DarakjyAustraliaIoni Bowcher NEGOTIATION
Emily WhobreyBrazilAnna Fali NEW
Murillo MaletFranceStephen Shaw UNQUALIFIED
Morrow RutaIndiaIvan Magalhaes NEW
Aruna FigeroaItalyAsiya Javayant PROPOSAL
Misaki RoysterIndiaXuxue Feng NEGOTIATION
Jeanfrancois VenereSpainOnyama Limba NEW
Isabel BowleyAustraliaAmy Elsner NEGOTIATION
Clifford RimItalyStephen Shaw UNQUALIFIED
Ivar PaprockiItalyAmy Elsner NEW
Maisha RulapaughFranceElwin Sharvill RENEWAL
Silvio SlusarskiJapanOnyama Limba NEW
Jeanfrancois VenereCanadaStephen Shaw RENEWAL
Maisha RulapaughItalyAmy Elsner PROPOSAL

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