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
Aruna FigeroaBrazilIvan Magalhaes NEGOTIATION
Smith GlickAustraliaAmy Elsner NEGOTIATION
Leja CaldareraAustraliaOnyama Limba PROPOSAL
Jones VocelkaBrazilBernardo Dominic RENEWAL
Mujtaba NickaFranceElwin Sharvill QUALIFIED
Munro FerenczSpainStephen Shaw NEGOTIATION
Julie StensethGermanyAsiya Javayant UNQUALIFIED
Morrow RutaCanadaElwin Sharvill QUALIFIED
Stacey MacleadBrazilBernardo Dominic NEGOTIATION
Clifford RimAustraliaStephen Shaw RENEWAL
Jennifer AmigonJapanBernardo Dominic RENEWAL
Greenwood BologniaSpainBernardo Dominic PROPOSAL
Costa DilliardJapanIoni Bowcher NEGOTIATION
Mayumi KolmetzJapanXuxue Feng RENEWAL
Greenwood BologniaUnited KingdomIvan Magalhaes UNQUALIFIED
Ivar PaprockiCanadaElwin Sharvill QUALIFIED
Izzy GarufiItalyElwin Sharvill UNQUALIFIED
Leon OldroydIndiaAsiya Javayant NEW
Faith GillianCanadaElwin Sharvill UNQUALIFIED
Wickens NestleSpainAnna Fali NEGOTIATION
Aika InouyeIndiaIvan Magalhaes NEW
Aruna FigeroaUnited KingdomAnna Fali QUALIFIED
Misaki RoysterFranceIvan Magalhaes QUALIFIED
Murillo MaletUnited KingdomStephen Shaw PROPOSAL
Emily WhobreySpainAnna Fali NEGOTIATION
Smith GlickArgentinaIoni Bowcher PROPOSAL
Cody SaylorsGermanyStephen Shaw RENEWAL
Kadeem FlosiCanadaOnyama Limba NEGOTIATION
Silvio SlusarskiGermanyOnyama Limba NEGOTIATION
Leja CaldareraCanadaOnyama Limba NEGOTIATION
Antonio CaudyCanadaXuxue Feng NEGOTIATION
David DarakjyFranceIvan Magalhaes PROPOSAL
Claire TollnerJapanXuxue Feng NEW
Faith GillianItalyElwin Sharvill RENEWAL
Clifford RimItalyElwin Sharvill NEW
Isabel BowleyIndiaIoni Bowcher PROPOSAL
Misaki RoysterAustraliaBernardo Dominic PROPOSAL
Jefferson SchemmerItalyIoni Bowcher RENEWAL
Antonio CaudyFranceAmy Elsner NEGOTIATION
Stacey MacleadRussiaStephen Shaw NEW
Jennifer AmigonRussiaXuxue Feng UNQUALIFIED
Emily WhobreyArgentinaBernardo Dominic NEW
Costa DilliardIndiaElwin Sharvill PROPOSAL
Smith GlickUnited KingdomOnyama Limba NEW
Antonio CaudyJapanOnyama Limba UNQUALIFIED
Juan WieserSpainAsiya Javayant PROPOSAL
Ashley DoeArgentinaElwin Sharvill PROPOSAL
Julie StensethItalyStephen Shaw PROPOSAL
Silvio SlusarskiJapanAsiya Javayant PROPOSAL
David DarakjySpainAsiya Javayant NEW
Horizontal
NameCountryRepresentativeStatus
Kaitlin OstroskyArgentinaAnna Fali RENEWAL
Francesco ShinkoGermanyAmy Elsner NEGOTIATION
Chavez BriddickCanadaAmy Elsner PROPOSAL
Claire TollnerBrazilAsiya Javayant NEGOTIATION
Wickens NestleFranceIvan Magalhaes NEGOTIATION
Julie StensethItalyBernardo Dominic NEW
Maria MarrierItalyAmy Elsner PROPOSAL
Wickens NestleCanadaIvan Magalhaes PROPOSAL
Maisha RulapaughArgentinaElwin Sharvill NEGOTIATION
Arvin AlbaresArgentinaStephen Shaw NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Sinclair WaycottAustralia2026-04-15Benton, John B Jr NEGOTIATION70Asiya Javayant
1001Johnson SergiItaly2026-04-18Rousseaux, Michael Esq UNQUALIFIED78Asiya Javayant
1002Stacey MacleadArgentina2026-03-25Chemel, James L Cpa RENEWAL87Asiya Javayant
1003Juan WieserRussia2026-04-12Chemel, James L Cpa PROPOSAL64Ioni Bowcher
1004Isabel BowleyArgentina2026-04-07Dorl, James J Esq QUALIFIED71Asiya Javayant
1005Nicolas IturbideItaly2026-03-23Rousseaux, Michael Esq NEW31Xuxue Feng
1006Leon OldroydCanada2026-04-04Chapman, Ross E Esq NEW34Ioni Bowcher
1007Kaitlin OstroskyAustralia2026-03-24Rangoni Of Florence PROPOSAL6Ioni Bowcher
1008Morrow RutaItaly2026-04-09Morlong Associates NEGOTIATION55Asiya Javayant
1009David DarakjyArgentina2026-04-11King, Christopher A Esq RENEWAL41Amy Elsner
1010Ivar PaprockiFrance2026-04-02Rangoni Of Florence QUALIFIED57Stephen Shaw
1011Clifford RimJapan2026-03-27Chapman, Ross E Esq UNQUALIFIED34Amy Elsner
1012Kadeem FlosiArgentina2026-04-05King, Christopher A Esq RENEWAL95Amy Elsner
1013Sinclair WaycottIndia2026-04-02Truhlar And Truhlar Attys PROPOSAL90Xuxue Feng
1014Salvatore StockhamArgentina2026-04-05Truhlar And Truhlar Attys UNQUALIFIED22Stephen Shaw
1015Ivar PaprockiCanada2026-04-15King, Christopher A Esq NEGOTIATION28Ivan Magalhaes
1016Kaitlin OstroskySpain2026-04-01Chemel, James L Cpa UNQUALIFIED84Elwin Sharvill
1017Leja CaldareraSpain2026-03-28Buckley Miller Wright RENEWAL66Asiya Javayant
1018Greenwood BologniaRussia2026-04-14Chanay, Jeffrey A Esq PROPOSAL48Ioni Bowcher
1019Stacey MacleadSpain2026-04-03Feiner Bros QUALIFIED35Anna Fali
1020Darci PoquetteRussia2026-04-16Chapman, Ross E Esq UNQUALIFIED7Elwin Sharvill
1021Leja CaldareraFrance2026-03-27Feiner Bros UNQUALIFIED32Ivan Magalhaes
1022David DarakjyFrance2026-03-30Dorl, James J Esq UNQUALIFIED29Bernardo Dominic
1023Aditya KuskoSpain2026-03-21Buckley Miller Wright UNQUALIFIED39Bernardo Dominic
1024Stacey MacleadItaly2026-04-15Rangoni Of Florence NEGOTIATION49Ioni Bowcher
1025Jennifer AmigonArgentina2026-04-11King, Christopher A Esq NEW66Ioni Bowcher
1026Jefferson SchemmerRussia2026-04-11Feiner Bros RENEWAL64Asiya Javayant
1027Kadeem FlosiIndia2026-04-17Chanay, Jeffrey A Esq PROPOSAL10Stephen Shaw
1028Emily WhobreyJapan2026-03-25Feiner Bros NEW35Anna Fali
1029Deepesh ChuiFrance2026-04-07Feiner Bros RENEWAL24Anna Fali
1030James ButtAustralia2026-03-28Chapman, Ross E Esq NEGOTIATION2Ivan Magalhaes
1031Aika InouyeJapan2026-04-18Dorl, James J Esq RENEWAL58Ivan Magalhaes
1032Arvin AlbaresAustralia2026-04-18Benton, John B Jr UNQUALIFIED74Ivan Magalhaes
1033Aditya KuskoFrance2026-04-04Feltz Printing Service RENEWAL51Amy Elsner
1034Julie StensethAustralia2026-04-05Rangoni Of Florence QUALIFIED80Elwin Sharvill
1035Juan WieserArgentina2026-04-01Dorl, James J Esq NEW89Anna Fali
1036Claire TollnerBrazil2026-04-19Rousseaux, Michael Esq NEW30Asiya Javayant
1037Ashley DoeCanada2026-04-09Chanay, Jeffrey A Esq PROPOSAL42Elwin Sharvill
1038Jennifer AmigonRussia2026-04-11Chemel, James L Cpa RENEWAL4Xuxue Feng
1039Francesco ShinkoBrazil2026-03-21Commercial Press RENEWAL13Stephen Shaw
1040Alejandro PerinCanada2026-04-13Rousseaux, Michael Esq QUALIFIED21Amy Elsner
1041Johnson SergiBrazil2026-03-28Chemel, James L Cpa QUALIFIED38Amy Elsner
1042Sinclair WaycottBrazil2026-04-15Printing Dimensions PROPOSAL23Ioni Bowcher
1043James ButtIndia2026-04-02Feiner Bros NEGOTIATION25Elwin Sharvill
1044Deepesh ChuiCanada2026-04-01King, Christopher A Esq PROPOSAL38Ivan Magalhaes
1045Ricardo GauchoRussia2026-04-13Chemel, James L Cpa UNQUALIFIED94Anna Fali
1046Aika InouyeItaly2026-04-05Feiner Bros UNQUALIFIED61Stephen Shaw
1047Clifford RimJapan2026-04-06Truhlar And Truhlar Attys PROPOSAL1Asiya Javayant
1048Cody SaylorsItaly2026-04-13Feltz Printing Service NEW77Xuxue Feng
1049Jeanfrancois VenereJapan2026-04-03Dorl, James J Esq RENEWAL10Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Nicolas IturbideUnited KingdomElwin Sharvill RENEWAL
Johnson SergiArgentinaAsiya Javayant RENEWAL
Arvin AlbaresIndiaIoni Bowcher RENEWAL
Misaki RoysterGermanyIvan Magalhaes NEGOTIATION
Silvio SlusarskiGermanyAnna Fali QUALIFIED
Murillo MaletArgentinaXuxue Feng UNQUALIFIED
Tony FollerAustraliaStephen Shaw NEW
Rodrigues CampainSpainBernardo Dominic RENEWAL
Mujtaba NickaGermanyStephen Shaw QUALIFIED
Isabel BowleyGermanyElwin Sharvill RENEWAL
Tony FollerFranceIvan Magalhaes UNQUALIFIED
Jeanfrancois VenereAustraliaXuxue Feng UNQUALIFIED
Aruna FigeroaIndiaStephen Shaw PROPOSAL
Leja CaldareraArgentinaElwin Sharvill NEGOTIATION
Faith GillianRussiaAmy Elsner RENEWAL
James ButtArgentinaAnna Fali RENEWAL
Antonio CaudyCanadaStephen Shaw PROPOSAL
Smith GlickItalyXuxue Feng QUALIFIED
Sinclair WaycottAustraliaStephen Shaw PROPOSAL
Deepesh ChuiBrazilOnyama Limba RENEWAL
Aditya KuskoAustraliaXuxue Feng QUALIFIED
Silvio SlusarskiAustraliaAsiya Javayant NEW
Aika InouyeFranceIvan Magalhaes RENEWAL
Murillo MaletFranceBernardo Dominic NEGOTIATION
Murillo MaletAustraliaIoni Bowcher PROPOSAL
Leon OldroydSpainBernardo Dominic QUALIFIED
Darci PoquetteBrazilXuxue Feng UNQUALIFIED
Julie StensethGermanyAsiya Javayant PROPOSAL
Misaki RoysterUnited KingdomStephen Shaw NEW
Jeanfrancois VenereAustraliaBernardo Dominic NEGOTIATION
Leja CaldareraUnited KingdomAmy Elsner RENEWAL
Adams MorascaBrazilAsiya Javayant PROPOSAL
Mujtaba NickaGermanyOnyama Limba PROPOSAL
Nicolas IturbideIndiaOnyama Limba RENEWAL
Leon OldroydCanadaIvan Magalhaes UNQUALIFIED
Munro FerenczSpainStephen Shaw QUALIFIED
Octavia MaletArgentinaStephen Shaw QUALIFIED
Leon OldroydArgentinaElwin Sharvill PROPOSAL
Munro FerenczFranceXuxue Feng RENEWAL
Aditya KuskoAustraliaAsiya Javayant NEGOTIATION
Aika InouyeBrazilElwin Sharvill QUALIFIED
Kadeem FlosiCanadaXuxue Feng RENEWAL
Salvatore StockhamRussiaStephen Shaw NEGOTIATION
David DarakjySpainXuxue Feng NEW
Mujtaba NickaFranceIoni Bowcher NEW
Aika InouyeIndiaStephen Shaw NEW
Stacey MacleadGermanyElwin Sharvill UNQUALIFIED
Costa DilliardBrazilAnna Fali UNQUALIFIED
Arvin AlbaresUnited KingdomOnyama Limba RENEWAL
Antonio CaudyArgentinaXuxue Feng UNQUALIFIED
Frozen Columns
Name
Rodrigues Campain
Juan Wieser
Morrow Ruta
Darci Poquette
Tony Foller
Morrow Ruta
Juan Wieser
Izzy Garufi
Arvin Albares
Rodrigues Campain
Stacey Maclead
Greenwood Bolognia
Arvin Albares
Kaitlin Ostrosky
Sinclair Waycott
Mujtaba Nicka
Cody Saylors
Adams Morasca
Munro Ferencz
Clifford Rim
Greenwood Bolognia
Silvio Slusarski
Murillo Malet
Munro Ferencz
Isabel Bowley
Antonio Caudy
Maisha Rulapaugh
Kaitlin Ostrosky
Smith Glick
Kaitlin Ostrosky
Ivar Paprocki
Emily Whobrey
Munro Ferencz
Smith Glick
Ashley Doe
Misaki Royster
Ivar Paprocki
Leon Oldroyd
Mayumi Kolmetz
Leon Oldroyd
Antonio Caudy
Sinclair Waycott
Jefferson Schemmer
Faith Gillian
Salvatore Stockham
Chavez Briddick
Ashley Doe
Stacey Maclead
Juan Wieser
Maisha Rulapaugh
IdCountryDate
1000Japan2026-03-24
1001Italy2026-04-12
1002France2026-03-25
1003Spain2026-03-27
1004Spain2026-03-27
1005Italy2026-03-23
1006Brazil2026-04-01
1007Germany2026-03-29
1008Russia2026-04-12
1009India2026-03-26
1010India2026-04-04
1011Spain2026-03-26
1012United Kingdom2026-04-08
1013Argentina2026-04-08
1014Brazil2026-04-01
1015United Kingdom2026-04-01
1016Australia2026-04-17
1017Japan2026-04-05
1018Australia2026-04-16
1019France2026-04-08
1020India2026-04-16
1021Spain2026-04-04
1022Spain2026-04-07
1023United Kingdom2026-03-27
1024Russia2026-04-02
1025United Kingdom2026-03-29
1026Argentina2026-03-31
1027Germany2026-03-30
1028Germany2026-04-04
1029Argentina2026-04-16
1030Australia2026-04-01
1031Canada2026-03-22
1032Japan2026-04-02
1033Spain2026-04-12
1034Japan2026-04-12
1035Germany2026-03-21
1036Argentina2026-04-13
1037Australia2026-04-03
1038Germany2026-04-13
1039United Kingdom2026-04-13
1040Italy2026-04-05
1041France2026-04-15
1042Russia2026-04-12
1043Brazil2026-03-28
1044Canada2026-04-17
1045Germany2026-04-02
1046Italy2026-04-17
1047Germany2026-04-15
1048Brazil2026-04-13
1049Italy2026-04-03

On-Demand Data

NameIdCountryDate
Ashley Doe1000Russia2026-04-05
Jeanfrancois Venere1001Australia2026-04-09
Wickens Nestle1002France2026-03-25
Greenwood Bolognia1003Brazil2026-03-25
Alejandro Perin1004Germany2026-04-16
Mujtaba Nicka1005Argentina2026-04-18
Nicolas Iturbide1006Italy2026-04-16
Jeanfrancois Venere1007Italy2026-04-17
Arvin Albares1008France2026-04-14
Faith Gillian1009Italy2026-04-05
Costa Dilliard1010Germany2026-04-03
Morrow Ruta1011France2026-04-17
Nicolas Iturbide1012United Kingdom2026-04-12
Alejandro Perin1013Italy2026-04-05
Kadeem Flosi1014Spain2026-04-17
Ricardo Gaucho1015Russia2026-04-08
Nicolas Iturbide1016Russia2026-04-01
Nicolas Iturbide1017Japan2026-04-08
Chavez Briddick1018Japan2026-04-02
Salvatore Stockham1019United Kingdom2026-04-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aruna FigeroaArgentinaAmy Elsner QUALIFIED
Silvio SlusarskiSpainAsiya Javayant PROPOSAL
Chavez BriddickIndiaElwin Sharvill RENEWAL
Faith GillianBrazilElwin Sharvill UNQUALIFIED
Misaki RoysterUnited KingdomOnyama Limba UNQUALIFIED
Aika InouyeJapanAsiya Javayant NEW
Jeanfrancois VenereCanadaAmy Elsner NEGOTIATION
Costa DilliardRussiaAsiya Javayant NEGOTIATION
Aditya KuskoAustraliaIoni Bowcher RENEWAL
Juan WieserFranceIoni Bowcher QUALIFIED
Ricardo GauchoItalyStephen Shaw NEW
Juan WieserIndiaAnna Fali RENEWAL
Jones VocelkaSpainXuxue Feng UNQUALIFIED
Maria MarrierIndiaAnna Fali NEGOTIATION
Munro FerenczAustraliaXuxue Feng QUALIFIED
Jennifer AmigonGermanyIoni Bowcher RENEWAL
Johnson SergiSpainXuxue Feng PROPOSAL
Ricardo GauchoAustraliaAsiya Javayant UNQUALIFIED
Ricardo GauchoFranceElwin Sharvill NEW
Aruna FigeroaJapanAnna Fali NEW
Izzy GarufiItalyAmy Elsner QUALIFIED
Chavez BriddickGermanyAsiya Javayant UNQUALIFIED
Jones VocelkaGermanyXuxue Feng NEGOTIATION
Izzy GarufiJapanAnna Fali RENEWAL
Murillo MaletRussiaAsiya Javayant UNQUALIFIED
Stacey MacleadArgentinaAsiya Javayant RENEWAL
James ButtBrazilAnna Fali UNQUALIFIED
Cody SaylorsBrazilAnna Fali UNQUALIFIED
Morrow RutaItalyOnyama Limba NEGOTIATION
Adams MorascaSpainAsiya Javayant NEGOTIATION
Alejandro PerinItalyStephen Shaw QUALIFIED
Salvatore StockhamItalyBernardo Dominic QUALIFIED
Aika InouyeFranceIoni Bowcher NEGOTIATION
Antonio CaudyBrazilStephen Shaw NEGOTIATION
Misaki RoysterUnited KingdomBernardo Dominic NEGOTIATION
Octavia MaletCanadaOnyama Limba UNQUALIFIED
Jefferson SchemmerGermanyElwin Sharvill QUALIFIED
Nicolas IturbideIndiaAnna Fali NEW
Rodrigues CampainItalyIvan Magalhaes PROPOSAL
Ashley DoeArgentinaElwin Sharvill 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>