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 RoysterFranceIoni Bowcher UNQUALIFIED
Johnson SergiGermanyIoni Bowcher QUALIFIED
Kaitlin OstroskyItalyIoni Bowcher UNQUALIFIED
Julie StensethSpainBernardo Dominic UNQUALIFIED
Julie StensethBrazilXuxue Feng PROPOSAL
Leon OldroydIndiaElwin Sharvill PROPOSAL
Claire TollnerFranceAnna Fali QUALIFIED
Salvatore StockhamRussiaXuxue Feng UNQUALIFIED
Antonio CaudyGermanyStephen Shaw UNQUALIFIED
Sinclair WaycottBrazilElwin Sharvill PROPOSAL
Jones VocelkaJapanIoni Bowcher NEGOTIATION
Aika InouyeGermanyStephen Shaw PROPOSAL
Izzy GarufiUnited KingdomAmy Elsner PROPOSAL
Jefferson SchemmerBrazilOnyama Limba QUALIFIED
Ashley DoeAustraliaAnna Fali QUALIFIED
Ashley DoeIndiaIvan Magalhaes PROPOSAL
Kadeem FlosiGermanyStephen Shaw UNQUALIFIED
Darci PoquetteFranceAsiya Javayant RENEWAL
Jennifer AmigonAustraliaStephen Shaw QUALIFIED
Jeanfrancois VenereArgentinaIoni Bowcher UNQUALIFIED
Aika InouyeJapanStephen Shaw QUALIFIED
Greenwood BologniaUnited KingdomIvan Magalhaes NEW
Wickens NestleSpainAmy Elsner QUALIFIED
Silvio SlusarskiRussiaAsiya Javayant RENEWAL
Wickens NestleIndiaElwin Sharvill NEW
Octavia MaletArgentinaOnyama Limba RENEWAL
Silvio SlusarskiRussiaXuxue Feng UNQUALIFIED
Kaitlin OstroskyUnited KingdomXuxue Feng UNQUALIFIED
Stacey MacleadGermanyElwin Sharvill PROPOSAL
David DarakjyItalyXuxue Feng NEGOTIATION
Arvin AlbaresCanadaOnyama Limba PROPOSAL
Aika InouyeFranceXuxue Feng RENEWAL
Johnson SergiCanadaAnna Fali UNQUALIFIED
Tony FollerUnited KingdomAsiya Javayant PROPOSAL
Octavia MaletCanadaAmy Elsner NEW
Jones VocelkaBrazilAnna Fali QUALIFIED
Julie StensethSpainIoni Bowcher NEW
Kaitlin OstroskyIndiaStephen Shaw RENEWAL
Jefferson SchemmerJapanStephen Shaw QUALIFIED
Julie StensethUnited KingdomStephen Shaw QUALIFIED
Maisha RulapaughItalyAnna Fali NEGOTIATION
Jones VocelkaRussiaAmy Elsner UNQUALIFIED
Rodrigues CampainGermanyIoni Bowcher RENEWAL
Greenwood BologniaAustraliaBernardo Dominic UNQUALIFIED
Alejandro PerinAustraliaElwin Sharvill RENEWAL
Wickens NestleArgentinaElwin Sharvill UNQUALIFIED
Julie StensethItalyXuxue Feng NEW
Faith GillianRussiaAmy Elsner NEW
Johnson SergiIndiaElwin Sharvill UNQUALIFIED
Leja CaldareraSpainBernardo Dominic RENEWAL
Horizontal
NameCountryRepresentativeStatus
Darci PoquetteFranceBernardo Dominic PROPOSAL
Greenwood BologniaFranceAnna Fali QUALIFIED
Jefferson SchemmerFranceIvan Magalhaes NEGOTIATION
Ivar PaprockiFranceAsiya Javayant QUALIFIED
Octavia MaletArgentinaIoni Bowcher RENEWAL
Jones VocelkaBrazilIoni Bowcher UNQUALIFIED
Chavez BriddickCanadaOnyama Limba NEGOTIATION
Chavez BriddickRussiaXuxue Feng NEGOTIATION
Mujtaba NickaBrazilIvan Magalhaes RENEWAL
Rodrigues CampainIndiaBernardo Dominic RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Adams MorascaItaly2026-05-26Rangoni Of Florence NEGOTIATION15Asiya Javayant
1001Murillo MaletFrance2026-06-10Benton, John B Jr RENEWAL55Xuxue Feng
1002Emily WhobreyRussia2026-05-31Commercial Press UNQUALIFIED66Bernardo Dominic
1003Costa DilliardItaly2026-06-05Buckley Miller Wright NEW96Anna Fali
1004Maisha RulapaughBrazil2026-06-04Chapman, Ross E Esq RENEWAL11Stephen Shaw
1005Darci PoquetteBrazil2026-05-21Feltz Printing Service NEW79Amy Elsner
1006Alejandro PerinItaly2026-06-10Buckley Miller Wright UNQUALIFIED75Elwin Sharvill
1007Murillo MaletRussia2026-05-25Benton, John B Jr RENEWAL73Stephen Shaw
1008Deepesh ChuiRussia2026-05-22Buckley Miller Wright RENEWAL9Bernardo Dominic
1009Juan WieserRussia2026-05-15Commercial Press NEW28Bernardo Dominic
1010James ButtGermany2026-05-24King, Christopher A Esq PROPOSAL91Amy Elsner
1011Antonio CaudyItaly2026-06-02Chapman, Ross E Esq QUALIFIED68Elwin Sharvill
1012Mayumi KolmetzAustralia2026-05-19Commercial Press UNQUALIFIED15Anna Fali
1013Johnson SergiAustralia2026-05-31Printing Dimensions NEW24Onyama Limba
1014Ashley DoeSpain2026-06-01Chanay, Jeffrey A Esq RENEWAL11Anna Fali
1015Ricardo GauchoAustralia2026-05-23Feltz Printing Service PROPOSAL63Anna Fali
1016Ivar PaprockiFrance2026-05-21Buckley Miller Wright RENEWAL35Ioni Bowcher
1017Maisha RulapaughAustralia2026-05-29Chemel, James L Cpa NEW74Elwin Sharvill
1018Alejandro PerinIndia2026-05-25Commercial Press UNQUALIFIED41Onyama Limba
1019Deepesh ChuiItaly2026-05-28Benton, John B Jr RENEWAL60Ioni Bowcher
1020Jefferson SchemmerJapan2026-05-26Printing Dimensions RENEWAL12Bernardo Dominic
1021Murillo MaletRussia2026-06-07Rousseaux, Michael Esq NEW48Anna Fali
1022Mayumi KolmetzGermany2026-06-04Truhlar And Truhlar Attys UNQUALIFIED71Ivan Magalhaes
1023Kadeem FlosiArgentina2026-05-23Printing Dimensions RENEWAL92Anna Fali
1024Wickens NestleGermany2026-05-25Benton, John B Jr PROPOSAL57Stephen Shaw
1025Jefferson SchemmerBrazil2026-05-19Chemel, James L Cpa PROPOSAL79Amy Elsner
1026Francesco ShinkoJapan2026-05-24Rousseaux, Michael Esq UNQUALIFIED64Asiya Javayant
1027Chavez BriddickRussia2026-06-03Feltz Printing Service PROPOSAL72Asiya Javayant
1028Claire TollnerItaly2026-05-15Printing Dimensions RENEWAL74Xuxue Feng
1029Claire TollnerBrazil2026-05-17Dorl, James J Esq NEGOTIATION97Ivan Magalhaes
1030Mujtaba NickaRussia2026-06-09Chanay, Jeffrey A Esq NEGOTIATION46Anna Fali
1031Octavia MaletAustralia2026-06-06Morlong Associates NEW77Stephen Shaw
1032Adams MorascaAustralia2026-06-01Chanay, Jeffrey A Esq NEGOTIATION43Xuxue Feng
1033Clifford RimBrazil2026-05-29Buckley Miller Wright RENEWAL41Asiya Javayant
1034Chavez BriddickGermany2026-06-09Buckley Miller Wright NEGOTIATION10Amy Elsner
1035Izzy GarufiRussia2026-06-09Morlong Associates RENEWAL62Stephen Shaw
1036Sinclair WaycottCanada2026-06-09Chanay, Jeffrey A Esq UNQUALIFIED31Ivan Magalhaes
1037Cody SaylorsAustralia2026-05-31Morlong Associates NEGOTIATION49Xuxue Feng
1038Octavia MaletUnited Kingdom2026-06-03Chapman, Ross E Esq QUALIFIED6Anna Fali
1039Faith GillianRussia2026-05-14Dorl, James J Esq UNQUALIFIED24Bernardo Dominic
1040Arvin AlbaresFrance2026-06-03King, Christopher A Esq RENEWAL34Elwin Sharvill
1041Stacey MacleadIndia2026-06-10King, Christopher A Esq PROPOSAL90Bernardo Dominic
1042Ricardo GauchoRussia2026-05-29Feiner Bros QUALIFIED91Asiya Javayant
1043Isabel BowleyIndia2026-06-08Dorl, James J Esq NEW10Ivan Magalhaes
1044Aika InouyeItaly2026-05-28Morlong Associates NEW88Bernardo Dominic
1045Antonio CaudyFrance2026-05-21Feiner Bros PROPOSAL46Ioni Bowcher
1046Octavia MaletGermany2026-06-02Rangoni Of Florence RENEWAL26Elwin Sharvill
1047Jones VocelkaBrazil2026-05-21Buckley Miller Wright RENEWAL49Anna Fali
1048Maria MarrierIndia2026-05-27Commercial Press RENEWAL32Ioni Bowcher
1049Aika InouyeItaly2026-05-22Benton, John B Jr NEW63Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Jeanfrancois VenereGermanyStephen Shaw UNQUALIFIED
Leja CaldareraRussiaAsiya Javayant UNQUALIFIED
Leja CaldareraJapanIvan Magalhaes UNQUALIFIED
Smith GlickFranceIoni Bowcher UNQUALIFIED
Clifford RimArgentinaAnna Fali QUALIFIED
Clifford RimBrazilBernardo Dominic UNQUALIFIED
Morrow RutaJapanIvan Magalhaes NEW
Kaitlin OstroskyIndiaXuxue Feng UNQUALIFIED
Silvio SlusarskiArgentinaOnyama Limba UNQUALIFIED
Cody SaylorsCanadaXuxue Feng QUALIFIED
Julie StensethRussiaAsiya Javayant NEGOTIATION
Jennifer AmigonAustraliaIvan Magalhaes NEGOTIATION
Maria MarrierCanadaIvan Magalhaes QUALIFIED
Aruna FigeroaSpainAmy Elsner QUALIFIED
Sinclair WaycottArgentinaBernardo Dominic RENEWAL
James ButtItalyAsiya Javayant QUALIFIED
David DarakjyCanadaIvan Magalhaes PROPOSAL
Nicolas IturbideBrazilBernardo Dominic NEW
Aditya KuskoBrazilXuxue Feng QUALIFIED
Ivar PaprockiRussiaBernardo Dominic NEW
Kadeem FlosiJapanAmy Elsner NEW
Aditya KuskoFranceElwin Sharvill PROPOSAL
Ricardo GauchoItalyElwin Sharvill QUALIFIED
Aditya KuskoJapanAmy Elsner RENEWAL
Francesco ShinkoFranceOnyama Limba QUALIFIED
Greenwood BologniaJapanXuxue Feng QUALIFIED
Clifford RimAustraliaStephen Shaw RENEWAL
Stacey MacleadUnited KingdomAsiya Javayant UNQUALIFIED
Jeanfrancois VenereAustraliaIvan Magalhaes UNQUALIFIED
Deepesh ChuiSpainAnna Fali QUALIFIED
Jennifer AmigonAustraliaIoni Bowcher PROPOSAL
Wickens NestleArgentinaAnna Fali PROPOSAL
Emily WhobreySpainStephen Shaw NEW
Deepesh ChuiSpainAnna Fali NEW
Francesco ShinkoGermanyElwin Sharvill QUALIFIED
Leja CaldareraAustraliaXuxue Feng QUALIFIED
Sinclair WaycottFranceIvan Magalhaes NEW
Jennifer AmigonCanadaAnna Fali UNQUALIFIED
Claire TollnerUnited KingdomIvan Magalhaes NEW
Isabel BowleyArgentinaXuxue Feng RENEWAL
James ButtRussiaIvan Magalhaes PROPOSAL
Kadeem FlosiUnited KingdomAsiya Javayant NEGOTIATION
Jennifer AmigonBrazilBernardo Dominic QUALIFIED
David DarakjyItalyBernardo Dominic UNQUALIFIED
James ButtIndiaIoni Bowcher QUALIFIED
Jeanfrancois VenereGermanyAnna Fali PROPOSAL
Darci PoquetteItalyAmy Elsner NEGOTIATION
Leon OldroydItalyStephen Shaw QUALIFIED
Cody SaylorsItalyIoni Bowcher UNQUALIFIED
Arvin AlbaresJapanStephen Shaw QUALIFIED
Frozen Columns
Name
Jennifer Amigon
Sinclair Waycott
Darci Poquette
David Darakjy
Julie Stenseth
Francesco Shinko
Julie Stenseth
Kaitlin Ostrosky
Antonio Caudy
Cody Saylors
Aruna Figeroa
Kaitlin Ostrosky
Wickens Nestle
Alejandro Perin
Ashley Doe
Jeanfrancois Venere
Cody Saylors
Cody Saylors
Maria Marrier
Kaitlin Ostrosky
Sinclair Waycott
Antonio Caudy
Juan Wieser
Antonio Caudy
Kadeem Flosi
Adams Morasca
Jennifer Amigon
Izzy Garufi
Adams Morasca
Juan Wieser
Maria Marrier
Octavia Malet
Jeanfrancois Venere
Faith Gillian
Salvatore Stockham
Emily Whobrey
Aika Inouye
Clifford Rim
Rodrigues Campain
Antonio Caudy
James Butt
Misaki Royster
Izzy Garufi
Sinclair Waycott
Johnson Sergi
David Darakjy
Wickens Nestle
Salvatore Stockham
Jennifer Amigon
Izzy Garufi
IdCountryDate
1000Spain2026-05-30
1001Spain2026-05-28
1002Russia2026-05-15
1003Japan2026-05-24
1004Italy2026-06-01
1005United Kingdom2026-05-22
1006India2026-05-25
1007Germany2026-06-09
1008United Kingdom2026-05-20
1009Brazil2026-05-28
1010Spain2026-06-07
1011India2026-06-04
1012Brazil2026-06-04
1013United Kingdom2026-05-26
1014Japan2026-05-16
1015United Kingdom2026-05-18
1016France2026-06-10
1017Argentina2026-06-10
1018Germany2026-05-21
1019United Kingdom2026-05-22
1020France2026-06-07
1021Australia2026-05-22
1022Canada2026-05-27
1023Brazil2026-06-05
1024United Kingdom2026-05-17
1025Australia2026-05-25
1026United Kingdom2026-06-03
1027Italy2026-06-04
1028Brazil2026-05-30
1029United Kingdom2026-05-29
1030Argentina2026-05-18
1031France2026-05-16
1032Brazil2026-05-23
1033Japan2026-05-21
1034Spain2026-05-22
1035Argentina2026-06-08
1036India2026-05-23
1037India2026-05-24
1038Canada2026-05-18
1039Russia2026-05-30
1040Argentina2026-06-11
1041Argentina2026-06-09
1042Japan2026-05-29
1043India2026-05-15
1044United Kingdom2026-05-22
1045Russia2026-06-11
1046Canada2026-05-20
1047Russia2026-05-23
1048Australia2026-05-28
1049Spain2026-05-15

On-Demand Data

NameIdCountryDate
Ivar Paprocki1000Spain2026-05-22
Costa Dilliard1001Italy2026-06-12
Costa Dilliard1002Japan2026-06-05
Alejandro Perin1003France2026-05-21
Ashley Doe1004India2026-06-11
Francesco Shinko1005India2026-05-30
Ashley Doe1006Italy2026-05-16
James Butt1007Brazil2026-06-09
Faith Gillian1008Russia2026-05-18
Chavez Briddick1009France2026-06-12
Chavez Briddick1010Italy2026-06-05
Ricardo Gaucho1011Argentina2026-06-10
Jeanfrancois Venere1012Argentina2026-06-10
Darci Poquette1013Germany2026-05-20
Jennifer Amigon1014Australia2026-05-30
Leon Oldroyd1015Russia2026-06-03
Ricardo Gaucho1016Japan2026-05-14
Tony Foller1017Japan2026-06-06
Salvatore Stockham1018United Kingdom2026-05-22
Morrow Ruta1019France2026-05-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Chavez BriddickCanadaIvan Magalhaes NEGOTIATION
Stacey MacleadRussiaOnyama Limba PROPOSAL
Juan WieserAustraliaIoni Bowcher NEW
Smith GlickFranceXuxue Feng QUALIFIED
Leja CaldareraItalyBernardo Dominic NEGOTIATION
Clifford RimBrazilBernardo Dominic UNQUALIFIED
Greenwood BologniaJapanIvan Magalhaes UNQUALIFIED
Johnson SergiArgentinaAmy Elsner QUALIFIED
Kaitlin OstroskyGermanyAsiya Javayant PROPOSAL
Ricardo GauchoGermanyAmy Elsner UNQUALIFIED
Sinclair WaycottIndiaBernardo Dominic UNQUALIFIED
Misaki RoysterCanadaIvan Magalhaes UNQUALIFIED
Jeanfrancois VenereCanadaAnna Fali NEGOTIATION
Maria MarrierUnited KingdomIvan Magalhaes RENEWAL
Nicolas IturbideIndiaIvan Magalhaes UNQUALIFIED
Leja CaldareraJapanIvan Magalhaes NEW
Mayumi KolmetzBrazilOnyama Limba PROPOSAL
Sinclair WaycottUnited KingdomAsiya Javayant UNQUALIFIED
Silvio SlusarskiJapanIvan Magalhaes PROPOSAL
Costa DilliardIndiaXuxue Feng RENEWAL
Izzy GarufiGermanyAsiya Javayant RENEWAL
Morrow RutaArgentinaElwin Sharvill NEGOTIATION
Mayumi KolmetzIndiaOnyama Limba RENEWAL
David DarakjyCanadaIvan Magalhaes NEGOTIATION
Chavez BriddickRussiaAsiya Javayant PROPOSAL
Nicolas IturbideJapanAsiya Javayant RENEWAL
Aruna FigeroaBrazilIoni Bowcher NEGOTIATION
Aruna FigeroaArgentinaIvan Magalhaes PROPOSAL
Adams MorascaJapanBernardo Dominic UNQUALIFIED
Wickens NestleFranceAmy Elsner UNQUALIFIED
Izzy GarufiGermanyElwin Sharvill RENEWAL
Emily WhobreyUnited KingdomAsiya Javayant RENEWAL
Silvio SlusarskiBrazilElwin Sharvill RENEWAL
Aditya KuskoCanadaStephen Shaw RENEWAL
Greenwood BologniaIndiaAmy Elsner QUALIFIED
Izzy GarufiRussiaIvan Magalhaes QUALIFIED
Cody SaylorsCanadaXuxue Feng NEW
Stacey MacleadArgentinaIvan Magalhaes RENEWAL
Francesco ShinkoUnited KingdomElwin Sharvill UNQUALIFIED
Leon OldroydBrazilBernardo Dominic 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>