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
Antonio CaudyJapanXuxue Feng UNQUALIFIED
Rodrigues CampainArgentinaAnna Fali NEGOTIATION
Wickens NestleBrazilBernardo Dominic RENEWAL
Leon OldroydUnited KingdomElwin Sharvill QUALIFIED
Aditya KuskoJapanAmy Elsner UNQUALIFIED
Greenwood BologniaFranceIoni Bowcher PROPOSAL
Jennifer AmigonJapanIvan Magalhaes QUALIFIED
Jefferson SchemmerRussiaIvan Magalhaes UNQUALIFIED
Murillo MaletAustraliaOnyama Limba UNQUALIFIED
Aika InouyeGermanyBernardo Dominic PROPOSAL
Jefferson SchemmerCanadaStephen Shaw NEW
Deepesh ChuiRussiaAmy Elsner NEW
Tony FollerSpainAmy Elsner NEW
Kadeem FlosiAustraliaAsiya Javayant UNQUALIFIED
Costa DilliardArgentinaAnna Fali UNQUALIFIED
Claire TollnerBrazilIvan Magalhaes UNQUALIFIED
Faith GillianItalyBernardo Dominic RENEWAL
James ButtSpainAsiya Javayant NEW
Mayumi KolmetzIndiaBernardo Dominic QUALIFIED
Mujtaba NickaArgentinaAmy Elsner NEGOTIATION
Cody SaylorsBrazilStephen Shaw PROPOSAL
Stacey MacleadItalyAsiya Javayant PROPOSAL
Maria MarrierAustraliaIoni Bowcher RENEWAL
Johnson SergiGermanyBernardo Dominic RENEWAL
Mujtaba NickaAustraliaXuxue Feng NEGOTIATION
Alejandro PerinBrazilElwin Sharvill QUALIFIED
Alejandro PerinItalyIoni Bowcher PROPOSAL
Murillo MaletArgentinaBernardo Dominic PROPOSAL
Mujtaba NickaSpainElwin Sharvill NEGOTIATION
Chavez BriddickSpainAsiya Javayant QUALIFIED
Misaki RoysterSpainAnna Fali NEW
Maria MarrierSpainAnna Fali PROPOSAL
Juan WieserSpainOnyama Limba UNQUALIFIED
Deepesh ChuiArgentinaBernardo Dominic PROPOSAL
Ashley DoeArgentinaIvan Magalhaes UNQUALIFIED
Mayumi KolmetzAustraliaAmy Elsner NEGOTIATION
Juan WieserSpainBernardo Dominic PROPOSAL
Johnson SergiBrazilBernardo Dominic RENEWAL
Cody SaylorsFranceOnyama Limba UNQUALIFIED
Silvio SlusarskiUnited KingdomAsiya Javayant UNQUALIFIED
Deepesh ChuiIndiaAsiya Javayant UNQUALIFIED
Leon OldroydFranceAmy Elsner UNQUALIFIED
Francesco ShinkoGermanyXuxue Feng NEW
Darci PoquetteRussiaAsiya Javayant NEGOTIATION
Salvatore StockhamJapanAnna Fali RENEWAL
James ButtAustraliaAsiya Javayant NEW
Claire TollnerUnited KingdomIoni Bowcher UNQUALIFIED
Ricardo GauchoBrazilIoni Bowcher PROPOSAL
Arvin AlbaresAustraliaAmy Elsner NEW
Antonio CaudyArgentinaElwin Sharvill NEW
Horizontal
NameCountryRepresentativeStatus
Silvio SlusarskiJapanAsiya Javayant RENEWAL
Adams MorascaRussiaAmy Elsner RENEWAL
Jeanfrancois VenereFranceStephen Shaw PROPOSAL
Wickens NestleAustraliaOnyama Limba QUALIFIED
Jeanfrancois VenereGermanyOnyama Limba NEGOTIATION
Kadeem FlosiSpainOnyama Limba UNQUALIFIED
Chavez BriddickRussiaAmy Elsner QUALIFIED
Jefferson SchemmerRussiaXuxue Feng RENEWAL
Jones VocelkaGermanyIoni Bowcher NEGOTIATION
Aruna FigeroaItalyIvan Magalhaes NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Nicolas IturbideItaly2026-05-02Buckley Miller Wright UNQUALIFIED25Anna Fali
1001James ButtSpain2026-05-19Chanay, Jeffrey A Esq RENEWAL32Stephen Shaw
1002Arvin AlbaresRussia2026-05-06Buckley Miller Wright UNQUALIFIED6Onyama Limba
1003Jones VocelkaGermany2026-04-27King, Christopher A Esq RENEWAL68Asiya Javayant
1004Stacey MacleadBrazil2026-05-07Chapman, Ross E Esq NEW2Asiya Javayant
1005Wickens NestleJapan2026-05-20Feiner Bros RENEWAL60Xuxue Feng
1006Ivar PaprockiSpain2026-05-15Dorl, James J Esq RENEWAL66Elwin Sharvill
1007Misaki RoysterArgentina2026-04-29Benton, John B Jr PROPOSAL37Xuxue Feng
1008Faith GillianIndia2026-05-15King, Christopher A Esq UNQUALIFIED91Elwin Sharvill
1009Arvin AlbaresSpain2026-04-29Rousseaux, Michael Esq QUALIFIED26Xuxue Feng
1010Kadeem FlosiRussia2026-05-19Feiner Bros UNQUALIFIED62Onyama Limba
1011Stacey MacleadArgentina2026-05-05Truhlar And Truhlar Attys QUALIFIED38Ioni Bowcher
1012Francesco ShinkoRussia2026-05-20Chanay, Jeffrey A Esq NEW68Xuxue Feng
1013Ashley DoeItaly2026-04-29Morlong Associates NEGOTIATION73Stephen Shaw
1014Rodrigues CampainCanada2026-04-28Chemel, James L Cpa NEGOTIATION42Anna Fali
1015Ricardo GauchoRussia2026-05-07King, Christopher A Esq RENEWAL31Ioni Bowcher
1016Mayumi KolmetzGermany2026-04-27Rangoni Of Florence PROPOSAL25Asiya Javayant
1017Sinclair WaycottBrazil2026-05-07Rangoni Of Florence PROPOSAL53Asiya Javayant
1018Clifford RimIndia2026-05-17Rousseaux, Michael Esq UNQUALIFIED41Asiya Javayant
1019Silvio SlusarskiRussia2026-04-24Chanay, Jeffrey A Esq PROPOSAL62Onyama Limba
1020Misaki RoysterIndia2026-05-21Rangoni Of Florence NEW9Ivan Magalhaes
1021Mayumi KolmetzIndia2026-05-09King, Christopher A Esq NEGOTIATION74Ioni Bowcher
1022Adams MorascaItaly2026-05-05Morlong Associates PROPOSAL70Ioni Bowcher
1023Rodrigues CampainItaly2026-04-23King, Christopher A Esq RENEWAL57Anna Fali
1024Wickens NestleCanada2026-05-22Rousseaux, Michael Esq QUALIFIED50Ivan Magalhaes
1025Mujtaba NickaItaly2026-05-20King, Christopher A Esq PROPOSAL62Ioni Bowcher
1026Ashley DoeFrance2026-05-17Rousseaux, Michael Esq NEGOTIATION46Ioni Bowcher
1027Arvin AlbaresArgentina2026-05-20Chemel, James L Cpa RENEWAL60Ioni Bowcher
1028Darci PoquetteBrazil2026-05-20Chapman, Ross E Esq UNQUALIFIED56Amy Elsner
1029Sinclair WaycottBrazil2026-05-02Printing Dimensions PROPOSAL60Bernardo Dominic
1030Arvin AlbaresItaly2026-05-03Buckley Miller Wright NEW39Asiya Javayant
1031Maria MarrierArgentina2026-05-19Dorl, James J Esq QUALIFIED8Ivan Magalhaes
1032James ButtGermany2026-04-27Feiner Bros NEW95Amy Elsner
1033Greenwood BologniaGermany2026-04-26Chanay, Jeffrey A Esq UNQUALIFIED67Ioni Bowcher
1034Johnson SergiCanada2026-05-19Feltz Printing Service UNQUALIFIED4Stephen Shaw
1035Sinclair WaycottItaly2026-05-17Benton, John B Jr UNQUALIFIED83Ivan Magalhaes
1036Kadeem FlosiCanada2026-05-17Printing Dimensions PROPOSAL95Onyama Limba
1037Darci PoquetteArgentina2026-05-05Dorl, James J Esq PROPOSAL31Elwin Sharvill
1038Ricardo GauchoCanada2026-04-30Benton, John B Jr PROPOSAL69Anna Fali
1039Ricardo GauchoBrazil2026-05-18Printing Dimensions RENEWAL88Stephen Shaw
1040Munro FerenczIndia2026-05-10Rangoni Of Florence PROPOSAL62Ivan Magalhaes
1041Silvio SlusarskiItaly2026-05-09Commercial Press UNQUALIFIED79Anna Fali
1042Jefferson SchemmerArgentina2026-05-05Feiner Bros UNQUALIFIED56Amy Elsner
1043Arvin AlbaresRussia2026-04-26Chanay, Jeffrey A Esq PROPOSAL54Bernardo Dominic
1044Clifford RimIndia2026-05-13Truhlar And Truhlar Attys NEW69Elwin Sharvill
1045Mayumi KolmetzItaly2026-05-01Commercial Press RENEWAL73Ivan Magalhaes
1046Clifford RimIndia2026-05-02Feltz Printing Service PROPOSAL20Ivan Magalhaes
1047Francesco ShinkoArgentina2026-04-29Truhlar And Truhlar Attys RENEWAL75Onyama Limba
1048Rodrigues CampainGermany2026-05-14Dorl, James J Esq NEW35Ivan Magalhaes
1049Stacey MacleadRussia2026-04-23Truhlar And Truhlar Attys NEW72Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Izzy GarufiFranceStephen Shaw PROPOSAL
Misaki RoysterFranceBernardo Dominic RENEWAL
Alejandro PerinBrazilStephen Shaw UNQUALIFIED
Emily WhobreySpainBernardo Dominic PROPOSAL
Leon OldroydAustraliaElwin Sharvill NEW
Aruna FigeroaUnited KingdomAmy Elsner QUALIFIED
Francesco ShinkoFranceIoni Bowcher PROPOSAL
Clifford RimCanadaOnyama Limba NEGOTIATION
Emily WhobreyIndiaAnna Fali QUALIFIED
Leja CaldareraBrazilOnyama Limba QUALIFIED
Aditya KuskoUnited KingdomIvan Magalhaes RENEWAL
David DarakjyFranceOnyama Limba NEGOTIATION
Izzy GarufiGermanyIoni Bowcher RENEWAL
Stacey MacleadItalyAnna Fali PROPOSAL
James ButtIndiaXuxue Feng UNQUALIFIED
Darci PoquetteAustraliaAnna Fali UNQUALIFIED
Faith GillianJapanIvan Magalhaes NEGOTIATION
Jeanfrancois VenereGermanyOnyama Limba UNQUALIFIED
Jones VocelkaIndiaIvan Magalhaes QUALIFIED
Greenwood BologniaBrazilBernardo Dominic QUALIFIED
Ivar PaprockiCanadaBernardo Dominic NEW
Chavez BriddickAustraliaAnna Fali NEGOTIATION
Tony FollerAustraliaXuxue Feng PROPOSAL
Juan WieserJapanAsiya Javayant QUALIFIED
Wickens NestleIndiaElwin Sharvill PROPOSAL
Leon OldroydIndiaStephen Shaw QUALIFIED
Ricardo GauchoItalyStephen Shaw UNQUALIFIED
Jeanfrancois VenereJapanBernardo Dominic QUALIFIED
Kadeem FlosiArgentinaAmy Elsner QUALIFIED
Deepesh ChuiRussiaIoni Bowcher PROPOSAL
Aruna FigeroaSpainIoni Bowcher NEGOTIATION
Aika InouyeIndiaOnyama Limba UNQUALIFIED
Izzy GarufiBrazilAsiya Javayant NEGOTIATION
Cody SaylorsArgentinaAnna Fali NEW
Tony FollerIndiaOnyama Limba QUALIFIED
Morrow RutaGermanyStephen Shaw QUALIFIED
Jones VocelkaCanadaAsiya Javayant NEW
Salvatore StockhamRussiaIoni Bowcher NEGOTIATION
Emily WhobreyFranceAsiya Javayant QUALIFIED
Cody SaylorsGermanyElwin Sharvill RENEWAL
Aruna FigeroaBrazilIoni Bowcher RENEWAL
James ButtBrazilElwin Sharvill PROPOSAL
Stacey MacleadItalyIoni Bowcher NEGOTIATION
Sinclair WaycottRussiaAmy Elsner QUALIFIED
James ButtUnited KingdomElwin Sharvill PROPOSAL
Isabel BowleyIndiaAsiya Javayant RENEWAL
Maria MarrierAustraliaElwin Sharvill NEW
Sinclair WaycottUnited KingdomAsiya Javayant PROPOSAL
Leon OldroydIndiaAsiya Javayant NEGOTIATION
Mujtaba NickaIndiaOnyama Limba PROPOSAL
Frozen Columns
Name
Alejandro Perin
Maria Marrier
Kaitlin Ostrosky
Juan Wieser
Aika Inouye
Smith Glick
Greenwood Bolognia
James Butt
Munro Ferencz
Wickens Nestle
Deepesh Chui
Murillo Malet
Juan Wieser
Deepesh Chui
Octavia Malet
Silvio Slusarski
Alejandro Perin
Misaki Royster
David Darakjy
Leja Caldarera
Aditya Kusko
Faith Gillian
Aditya Kusko
Wickens Nestle
Munro Ferencz
Tony Foller
Isabel Bowley
Emily Whobrey
Kadeem Flosi
Leon Oldroyd
Deepesh Chui
Faith Gillian
Morrow Ruta
Silvio Slusarski
Octavia Malet
Jeanfrancois Venere
Julie Stenseth
Leon Oldroyd
Johnson Sergi
Alejandro Perin
Clifford Rim
Jones Vocelka
Ivar Paprocki
Maria Marrier
Jefferson Schemmer
Johnson Sergi
Tony Foller
Juan Wieser
Sinclair Waycott
Murillo Malet
IdCountryDate
1000United Kingdom2026-05-17
1001India2026-05-05
1002India2026-04-27
1003Canada2026-05-19
1004Russia2026-05-09
1005Brazil2026-05-07
1006Spain2026-04-28
1007France2026-05-07
1008Spain2026-05-09
1009Spain2026-05-09
1010Canada2026-05-13
1011Canada2026-04-30
1012Italy2026-05-19
1013Germany2026-05-07
1014Italy2026-05-16
1015Australia2026-05-07
1016Italy2026-04-25
1017Australia2026-04-25
1018Japan2026-05-06
1019Japan2026-04-30
1020United Kingdom2026-05-03
1021Japan2026-05-02
1022Spain2026-04-23
1023India2026-05-12
1024Australia2026-05-10
1025Spain2026-05-14
1026France2026-05-15
1027Japan2026-04-26
1028Australia2026-05-04
1029Italy2026-05-06
1030Brazil2026-05-19
1031Canada2026-05-16
1032Germany2026-05-03
1033Japan2026-05-13
1034United Kingdom2026-05-04
1035Brazil2026-05-03
1036Brazil2026-05-12
1037Canada2026-04-25
1038Australia2026-05-05
1039India2026-04-30
1040Australia2026-05-08
1041Australia2026-04-30
1042Canada2026-05-11
1043India2026-05-09
1044United Kingdom2026-04-30
1045India2026-05-09
1046Russia2026-05-15
1047Spain2026-05-21
1048Russia2026-05-07
1049India2026-05-03

On-Demand Data

NameIdCountryDate
Kaitlin Ostrosky1000United Kingdom2026-04-24
Claire Tollner1001Germany2026-04-23
Ashley Doe1002Canada2026-05-08
Julie Stenseth1003Russia2026-04-26
Deepesh Chui1004Argentina2026-05-21
Kadeem Flosi1005Spain2026-05-07
Aika Inouye1006Australia2026-05-04
James Butt1007United Kingdom2026-05-04
Izzy Garufi1008Argentina2026-04-23
Alejandro Perin1009Italy2026-04-25
Alejandro Perin1010Russia2026-05-14
Emily Whobrey1011Spain2026-05-22
Smith Glick1012France2026-05-22
Johnson Sergi1013Brazil2026-05-06
Julie Stenseth1014Japan2026-05-21
Jones Vocelka1015Germany2026-05-08
Leja Caldarera1016United Kingdom2026-05-20
Jones Vocelka1017Spain2026-05-17
Ashley Doe1018Spain2026-05-01
Salvatore Stockham1019Spain2026-05-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Silvio SlusarskiCanadaAmy Elsner PROPOSAL
Kaitlin OstroskyArgentinaBernardo Dominic PROPOSAL
Salvatore StockhamJapanAmy Elsner QUALIFIED
Leja CaldareraUnited KingdomAsiya Javayant QUALIFIED
Jones VocelkaUnited KingdomOnyama Limba RENEWAL
Ashley DoeJapanIoni Bowcher RENEWAL
Costa DilliardSpainOnyama Limba RENEWAL
Clifford RimUnited KingdomStephen Shaw PROPOSAL
Ricardo GauchoAustraliaIvan Magalhaes QUALIFIED
Johnson SergiGermanyIvan Magalhaes NEW
Faith GillianUnited KingdomAmy Elsner UNQUALIFIED
Isabel BowleyGermanyElwin Sharvill PROPOSAL
Clifford RimSpainIoni Bowcher NEGOTIATION
Aruna FigeroaItalyElwin Sharvill NEGOTIATION
Ivar PaprockiUnited KingdomAnna Fali NEGOTIATION
Juan WieserFranceAsiya Javayant NEW
Izzy GarufiItalyIvan Magalhaes UNQUALIFIED
David DarakjyRussiaIoni Bowcher UNQUALIFIED
Leja CaldareraItalyAsiya Javayant QUALIFIED
Aruna FigeroaCanadaAmy Elsner RENEWAL
Sinclair WaycottAustraliaBernardo Dominic PROPOSAL
Juan WieserItalyAsiya Javayant NEGOTIATION
Leja CaldareraFranceBernardo Dominic QUALIFIED
Adams MorascaRussiaBernardo Dominic NEGOTIATION
Deepesh ChuiCanadaOnyama Limba NEGOTIATION
James ButtFranceElwin Sharvill PROPOSAL
Johnson SergiRussiaBernardo Dominic UNQUALIFIED
Julie StensethUnited KingdomAnna Fali UNQUALIFIED
Costa DilliardGermanyElwin Sharvill PROPOSAL
Cody SaylorsFranceAnna Fali RENEWAL
Jennifer AmigonAustraliaIoni Bowcher QUALIFIED
Izzy GarufiArgentinaAmy Elsner QUALIFIED
Morrow RutaItalyOnyama Limba NEGOTIATION
Adams MorascaItalyBernardo Dominic NEW
Claire TollnerUnited KingdomXuxue Feng RENEWAL
Murillo MaletArgentinaBernardo Dominic PROPOSAL
Faith GillianFranceBernardo Dominic NEW
Isabel BowleyGermanyStephen Shaw PROPOSAL
Emily WhobreyFranceXuxue Feng NEW
Jeanfrancois VenereArgentinaElwin Sharvill RENEWAL

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