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
Morrow RutaGermanyAmy Elsner UNQUALIFIED
Kadeem FlosiCanadaIvan Magalhaes RENEWAL
Claire TollnerSpainAsiya Javayant PROPOSAL
Aditya KuskoUnited KingdomAsiya Javayant UNQUALIFIED
Costa DilliardAustraliaBernardo Dominic NEGOTIATION
Arvin AlbaresBrazilXuxue Feng QUALIFIED
Jones VocelkaRussiaIoni Bowcher PROPOSAL
Alejandro PerinCanadaBernardo Dominic NEGOTIATION
Greenwood BologniaRussiaIvan Magalhaes RENEWAL
Cody SaylorsFranceIoni Bowcher NEGOTIATION
Maisha RulapaughRussiaAsiya Javayant RENEWAL
Aditya KuskoRussiaElwin Sharvill NEGOTIATION
Deepesh ChuiBrazilXuxue Feng UNQUALIFIED
Ashley DoeSpainStephen Shaw QUALIFIED
Jennifer AmigonGermanyOnyama Limba NEGOTIATION
Maria MarrierGermanyOnyama Limba RENEWAL
Cody SaylorsArgentinaIoni Bowcher PROPOSAL
Izzy GarufiIndiaAnna Fali NEGOTIATION
Aika InouyeJapanAnna Fali NEGOTIATION
Silvio SlusarskiFranceIvan Magalhaes RENEWAL
Cody SaylorsItalyIoni Bowcher NEW
Darci PoquetteBrazilAmy Elsner QUALIFIED
Costa DilliardRussiaStephen Shaw UNQUALIFIED
Aditya KuskoFranceAmy Elsner NEGOTIATION
Antonio CaudyJapanIoni Bowcher UNQUALIFIED
Stacey MacleadJapanElwin Sharvill PROPOSAL
Arvin AlbaresSpainStephen Shaw PROPOSAL
Ricardo GauchoSpainElwin Sharvill UNQUALIFIED
Francesco ShinkoFranceElwin Sharvill UNQUALIFIED
Greenwood BologniaSpainElwin Sharvill UNQUALIFIED
Antonio CaudyArgentinaAsiya Javayant NEGOTIATION
Deepesh ChuiAustraliaIvan Magalhaes NEW
Aditya KuskoJapanAnna Fali PROPOSAL
Aditya KuskoUnited KingdomXuxue Feng QUALIFIED
Izzy GarufiRussiaIoni Bowcher QUALIFIED
Clifford RimSpainXuxue Feng NEGOTIATION
Clifford RimAustraliaStephen Shaw UNQUALIFIED
Isabel BowleyCanadaBernardo Dominic PROPOSAL
Johnson SergiItalyAsiya Javayant RENEWAL
Ricardo GauchoArgentinaStephen Shaw RENEWAL
Ashley DoeItalyAmy Elsner QUALIFIED
Arvin AlbaresAustraliaIoni Bowcher NEW
James ButtArgentinaAsiya Javayant QUALIFIED
Antonio CaudyUnited KingdomStephen Shaw QUALIFIED
Greenwood BologniaJapanIoni Bowcher RENEWAL
Mujtaba NickaJapanIvan Magalhaes QUALIFIED
Deepesh ChuiRussiaOnyama Limba UNQUALIFIED
Salvatore StockhamCanadaAnna Fali RENEWAL
Munro FerenczSpainBernardo Dominic RENEWAL
Julie StensethUnited KingdomIoni Bowcher UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Kadeem FlosiBrazilElwin Sharvill NEGOTIATION
Tony FollerGermanyIvan Magalhaes RENEWAL
Juan WieserSpainBernardo Dominic NEW
Murillo MaletAustraliaOnyama Limba NEGOTIATION
Sinclair WaycottFranceOnyama Limba UNQUALIFIED
Clifford RimRussiaIoni Bowcher NEGOTIATION
Murillo MaletItalyStephen Shaw RENEWAL
Deepesh ChuiJapanIvan Magalhaes NEW
Sinclair WaycottBrazilAnna Fali RENEWAL
Leja CaldareraFranceAmy Elsner QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Johnson SergiArgentina2026-06-15King, Christopher A Esq RENEWAL15Ioni Bowcher
1001Sinclair WaycottUnited Kingdom2026-06-10Morlong Associates NEW80Elwin Sharvill
1002Jefferson SchemmerUnited Kingdom2026-06-12Rousseaux, Michael Esq RENEWAL97Amy Elsner
1003Alejandro PerinJapan2026-06-17Dorl, James J Esq RENEWAL82Xuxue Feng
1004Sinclair WaycottItaly2026-06-12Benton, John B Jr RENEWAL10Ivan Magalhaes
1005Aruna FigeroaIndia2026-06-08King, Christopher A Esq QUALIFIED28Ivan Magalhaes
1006Clifford RimAustralia2026-06-10Chapman, Ross E Esq QUALIFIED61Ioni Bowcher
1007Johnson SergiArgentina2026-06-15Morlong Associates QUALIFIED73Onyama Limba
1008Antonio CaudyFrance2026-06-04Rangoni Of Florence NEGOTIATION61Asiya Javayant
1009Antonio CaudyRussia2026-06-04Chemel, James L Cpa UNQUALIFIED91Anna Fali
1010Aruna FigeroaArgentina2026-06-19Rousseaux, Michael Esq NEW34Stephen Shaw
1011Rodrigues CampainAustralia2026-05-27Commercial Press NEW25Anna Fali
1012Ricardo GauchoCanada2026-06-19Chanay, Jeffrey A Esq RENEWAL58Xuxue Feng
1013Julie StensethAustralia2026-05-30Commercial Press NEGOTIATION76Elwin Sharvill
1014Francesco ShinkoBrazil2026-06-20Printing Dimensions QUALIFIED8Elwin Sharvill
1015Leon OldroydRussia2026-06-20Printing Dimensions RENEWAL23Elwin Sharvill
1016Greenwood BologniaIndia2026-06-20Chanay, Jeffrey A Esq QUALIFIED13Anna Fali
1017Greenwood BologniaAustralia2026-06-10Morlong Associates UNQUALIFIED83Onyama Limba
1018David DarakjyGermany2026-05-28Benton, John B Jr UNQUALIFIED98Asiya Javayant
1019Kaitlin OstroskyRussia2026-06-19Feiner Bros UNQUALIFIED56Xuxue Feng
1020Stacey MacleadCanada2026-06-13Rousseaux, Michael Esq NEGOTIATION58Stephen Shaw
1021Mayumi KolmetzGermany2026-06-07King, Christopher A Esq RENEWAL17Ioni Bowcher
1022Isabel BowleyCanada2026-06-15Chemel, James L Cpa QUALIFIED8Onyama Limba
1023Ivar PaprockiArgentina2026-06-05Chapman, Ross E Esq PROPOSAL8Anna Fali
1024Isabel BowleyAustralia2026-05-30Feiner Bros UNQUALIFIED8Onyama Limba
1025James ButtFrance2026-05-31Rangoni Of Florence UNQUALIFIED79Amy Elsner
1026Greenwood BologniaSpain2026-05-22Chemel, James L Cpa NEW51Elwin Sharvill
1027Stacey MacleadRussia2026-05-30Chapman, Ross E Esq NEGOTIATION91Xuxue Feng
1028Isabel BowleyRussia2026-05-24Feltz Printing Service PROPOSAL91Ivan Magalhaes
1029Leja CaldareraIndia2026-06-08Chanay, Jeffrey A Esq NEW18Bernardo Dominic
1030Stacey MacleadJapan2026-06-15Feltz Printing Service PROPOSAL73Stephen Shaw
1031Arvin AlbaresGermany2026-06-15King, Christopher A Esq UNQUALIFIED52Ivan Magalhaes
1032Ricardo GauchoAustralia2026-06-20Chanay, Jeffrey A Esq QUALIFIED17Ivan Magalhaes
1033Ivar PaprockiCanada2026-05-23Chemel, James L Cpa NEW65Bernardo Dominic
1034Leja CaldareraJapan2026-06-17Feiner Bros PROPOSAL39Ivan Magalhaes
1035Jones VocelkaArgentina2026-05-22Chapman, Ross E Esq PROPOSAL33Ivan Magalhaes
1036Munro FerenczItaly2026-06-11Commercial Press QUALIFIED26Stephen Shaw
1037Jeanfrancois VenereItaly2026-06-06King, Christopher A Esq QUALIFIED44Ivan Magalhaes
1038Antonio CaudyBrazil2026-06-17Rangoni Of Florence UNQUALIFIED68Ioni Bowcher
1039Sinclair WaycottSpain2026-06-08Benton, John B Jr PROPOSAL76Asiya Javayant
1040Chavez BriddickAustralia2026-06-01Rousseaux, Michael Esq QUALIFIED10Bernardo Dominic
1041Salvatore StockhamArgentina2026-06-19Commercial Press PROPOSAL32Anna Fali
1042Antonio CaudyCanada2026-06-19Commercial Press RENEWAL12Elwin Sharvill
1043Morrow RutaIndia2026-06-19Chemel, James L Cpa RENEWAL98Anna Fali
1044Nicolas IturbideFrance2026-05-25Chapman, Ross E Esq PROPOSAL10Xuxue Feng
1045Leja CaldareraCanada2026-06-04Commercial Press PROPOSAL85Onyama Limba
1046Murillo MaletAustralia2026-06-18Truhlar And Truhlar Attys QUALIFIED22Xuxue Feng
1047Murillo MaletUnited Kingdom2026-06-01Feltz Printing Service QUALIFIED5Stephen Shaw
1048Jones VocelkaItaly2026-06-08Morlong Associates PROPOSAL15Xuxue Feng
1049Leja CaldareraCanada2026-06-11Commercial Press NEW60Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Jeanfrancois VenereSpainAmy Elsner NEW
Isabel BowleyCanadaIvan Magalhaes RENEWAL
Alejandro PerinBrazilElwin Sharvill QUALIFIED
Stacey MacleadUnited KingdomAsiya Javayant PROPOSAL
Deepesh ChuiRussiaBernardo Dominic QUALIFIED
Maria MarrierCanadaElwin Sharvill UNQUALIFIED
Jeanfrancois VenereIndiaIvan Magalhaes RENEWAL
Cody SaylorsFranceAmy Elsner NEGOTIATION
Tony FollerJapanElwin Sharvill UNQUALIFIED
Morrow RutaAustraliaIoni Bowcher PROPOSAL
Wickens NestleItalyBernardo Dominic NEGOTIATION
Ivar PaprockiIndiaAmy Elsner NEW
Francesco ShinkoFranceAnna Fali UNQUALIFIED
Tony FollerArgentinaElwin Sharvill PROPOSAL
Claire TollnerSpainBernardo Dominic PROPOSAL
Julie StensethCanadaElwin Sharvill RENEWAL
Aruna FigeroaArgentinaOnyama Limba NEGOTIATION
Octavia MaletGermanyStephen Shaw RENEWAL
Salvatore StockhamArgentinaStephen Shaw NEGOTIATION
Maisha RulapaughArgentinaAmy Elsner UNQUALIFIED
Tony FollerSpainAsiya Javayant UNQUALIFIED
David DarakjyGermanyAmy Elsner NEW
Leja CaldareraAustraliaAmy Elsner QUALIFIED
Francesco ShinkoItalyStephen Shaw NEW
David DarakjyCanadaIvan Magalhaes NEW
Darci PoquetteArgentinaElwin Sharvill NEGOTIATION
Claire TollnerArgentinaIoni Bowcher RENEWAL
Juan WieserUnited KingdomIoni Bowcher NEW
Faith GillianItalyOnyama Limba QUALIFIED
James ButtJapanOnyama Limba UNQUALIFIED
Octavia MaletBrazilAsiya Javayant NEGOTIATION
Alejandro PerinFranceAnna Fali NEW
Claire TollnerBrazilStephen Shaw UNQUALIFIED
Morrow RutaGermanyStephen Shaw QUALIFIED
Ivar PaprockiArgentinaIoni Bowcher NEGOTIATION
Ricardo GauchoUnited KingdomXuxue Feng QUALIFIED
Misaki RoysterBrazilXuxue Feng UNQUALIFIED
Aditya KuskoSpainIvan Magalhaes UNQUALIFIED
Leon OldroydArgentinaXuxue Feng NEW
Mayumi KolmetzAustraliaStephen Shaw NEGOTIATION
Cody SaylorsJapanBernardo Dominic QUALIFIED
Claire TollnerSpainOnyama Limba QUALIFIED
Jennifer AmigonItalyAnna Fali PROPOSAL
Isabel BowleyArgentinaOnyama Limba NEW
Faith GillianSpainAsiya Javayant NEW
Jones VocelkaArgentinaBernardo Dominic UNQUALIFIED
Mujtaba NickaCanadaOnyama Limba QUALIFIED
Maria MarrierJapanIvan Magalhaes RENEWAL
Alejandro PerinSpainStephen Shaw RENEWAL
Emily WhobreyGermanyAmy Elsner NEGOTIATION
Frozen Columns
Name
Jennifer Amigon
Antonio Caudy
Izzy Garufi
Misaki Royster
Sinclair Waycott
Julie Stenseth
Jefferson Schemmer
Nicolas Iturbide
Silvio Slusarski
Clifford Rim
Arvin Albares
Aruna Figeroa
Aruna Figeroa
Maisha Rulapaugh
Izzy Garufi
Rodrigues Campain
Jones Vocelka
Francesco Shinko
Maria Marrier
Adams Morasca
Smith Glick
Juan Wieser
Alejandro Perin
Ricardo Gaucho
Clifford Rim
Johnson Sergi
Nicolas Iturbide
Munro Ferencz
Aditya Kusko
Adams Morasca
Aika Inouye
Antonio Caudy
Kaitlin Ostrosky
Aruna Figeroa
Murillo Malet
Tony Foller
Mujtaba Nicka
Cody Saylors
David Darakjy
Clifford Rim
Misaki Royster
Costa Dilliard
Deepesh Chui
Jennifer Amigon
Aditya Kusko
Juan Wieser
Alejandro Perin
Chavez Briddick
Maisha Rulapaugh
Antonio Caudy
IdCountryDate
1000Canada2026-06-02
1001Australia2026-05-29
1002India2026-05-29
1003Japan2026-05-31
1004Germany2026-06-17
1005Japan2026-06-06
1006Australia2026-05-23
1007Germany2026-05-28
1008Argentina2026-06-02
1009Argentina2026-05-29
1010Australia2026-05-24
1011France2026-06-11
1012Japan2026-06-06
1013Italy2026-05-23
1014Spain2026-06-09
1015Brazil2026-05-28
1016Argentina2026-05-23
1017France2026-06-02
1018India2026-06-08
1019Japan2026-05-30
1020Russia2026-06-13
1021Brazil2026-06-08
1022Germany2026-06-14
1023Spain2026-06-20
1024Italy2026-05-26
1025Italy2026-06-10
1026Australia2026-06-20
1027Brazil2026-06-14
1028India2026-06-07
1029Japan2026-05-25
1030Australia2026-05-26
1031Russia2026-06-07
1032Argentina2026-05-27
1033Japan2026-06-02
1034Russia2026-06-15
1035Germany2026-06-15
1036United Kingdom2026-05-26
1037Spain2026-06-07
1038Germany2026-06-09
1039France2026-06-07
1040Italy2026-06-13
1041Australia2026-06-03
1042Spain2026-06-20
1043Germany2026-06-13
1044India2026-05-23
1045Germany2026-05-22
1046India2026-06-11
1047Russia2026-06-18
1048Spain2026-06-07
1049Australia2026-06-06

On-Demand Data

NameIdCountryDate
Aditya Kusko1000Canada2026-05-30
Clifford Rim1001Spain2026-06-02
Arvin Albares1002Russia2026-05-31
Faith Gillian1003Spain2026-06-14
Greenwood Bolognia1004Spain2026-06-06
Aruna Figeroa1005Brazil2026-05-24
Mayumi Kolmetz1006United Kingdom2026-06-08
Darci Poquette1007Spain2026-06-15
Salvatore Stockham1008Brazil2026-05-23
Maria Marrier1009United Kingdom2026-06-04
Mujtaba Nicka1010Russia2026-05-29
Jones Vocelka1011Japan2026-06-18
Deepesh Chui1012France2026-06-17
Jefferson Schemmer1013Japan2026-05-25
Emily Whobrey1014Brazil2026-06-03
Alejandro Perin1015Germany2026-05-25
Maisha Rulapaugh1016Japan2026-05-29
Alejandro Perin1017Germany2026-06-05
Murillo Malet1018Italy2026-05-26
Nicolas Iturbide1019Argentina2026-06-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Deepesh ChuiAustraliaXuxue Feng NEGOTIATION
Aruna FigeroaArgentinaBernardo Dominic RENEWAL
Kaitlin OstroskyAustraliaElwin Sharvill RENEWAL
Claire TollnerIndiaBernardo Dominic NEW
Costa DilliardGermanyAsiya Javayant QUALIFIED
Cody SaylorsItalyStephen Shaw UNQUALIFIED
Jeanfrancois VenereCanadaAmy Elsner PROPOSAL
Francesco ShinkoRussiaBernardo Dominic PROPOSAL
Aruna FigeroaBrazilOnyama Limba UNQUALIFIED
Clifford RimAustraliaStephen Shaw UNQUALIFIED
Leon OldroydRussiaAnna Fali UNQUALIFIED
Chavez BriddickGermanyAsiya Javayant RENEWAL
Wickens NestleAustraliaOnyama Limba PROPOSAL
Jefferson SchemmerAustraliaIoni Bowcher NEGOTIATION
Aditya KuskoGermanyAsiya Javayant NEGOTIATION
Chavez BriddickItalyAmy Elsner NEGOTIATION
Ricardo GauchoAustraliaAsiya Javayant RENEWAL
Salvatore StockhamBrazilAsiya Javayant NEW
Misaki RoysterIndiaStephen Shaw UNQUALIFIED
Smith GlickUnited KingdomIvan Magalhaes UNQUALIFIED
Leja CaldareraBrazilAsiya Javayant UNQUALIFIED
Maisha RulapaughCanadaStephen Shaw QUALIFIED
Jefferson SchemmerJapanStephen Shaw RENEWAL
Maria MarrierRussiaIoni Bowcher UNQUALIFIED
Emily WhobreyUnited KingdomOnyama Limba QUALIFIED
Antonio CaudyIndiaAmy Elsner QUALIFIED
Isabel BowleyBrazilBernardo Dominic PROPOSAL
Clifford RimArgentinaStephen Shaw RENEWAL
Nicolas IturbideBrazilAmy Elsner QUALIFIED
Juan WieserAustraliaElwin Sharvill NEW
David DarakjySpainIoni Bowcher UNQUALIFIED
Antonio CaudyCanadaAsiya Javayant QUALIFIED
Wickens NestleIndiaIvan Magalhaes RENEWAL
Octavia MaletSpainOnyama Limba NEW
Clifford RimAustraliaBernardo Dominic NEW
Costa DilliardRussiaAnna Fali NEGOTIATION
Sinclair WaycottIndiaBernardo Dominic QUALIFIED
Julie StensethCanadaXuxue Feng NEW
Arvin AlbaresRussiaElwin Sharvill QUALIFIED
Misaki RoysterSpainStephen Shaw NEW

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