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
Kaitlin OstroskyCanadaStephen Shaw NEW
Silvio SlusarskiIndiaOnyama Limba RENEWAL
Morrow RutaItalyAsiya Javayant UNQUALIFIED
Maisha RulapaughArgentinaAsiya Javayant NEW
Darci PoquetteGermanyOnyama Limba UNQUALIFIED
Misaki RoysterGermanyStephen Shaw QUALIFIED
Maisha RulapaughBrazilAsiya Javayant UNQUALIFIED
Aruna FigeroaCanadaStephen Shaw QUALIFIED
Kadeem FlosiRussiaBernardo Dominic NEW
Chavez BriddickIndiaStephen Shaw UNQUALIFIED
Julie StensethJapanOnyama Limba RENEWAL
Leon OldroydFranceXuxue Feng RENEWAL
Tony FollerIndiaAnna Fali UNQUALIFIED
Chavez BriddickUnited KingdomIoni Bowcher PROPOSAL
Faith GillianAustraliaXuxue Feng PROPOSAL
Salvatore StockhamCanadaAnna Fali RENEWAL
Isabel BowleyRussiaOnyama Limba PROPOSAL
Deepesh ChuiJapanXuxue Feng QUALIFIED
Munro FerenczJapanIoni Bowcher QUALIFIED
Chavez BriddickFranceXuxue Feng UNQUALIFIED
Faith GillianSpainStephen Shaw NEGOTIATION
Jeanfrancois VenereBrazilAsiya Javayant RENEWAL
Leon OldroydJapanOnyama Limba PROPOSAL
Mujtaba NickaArgentinaElwin Sharvill PROPOSAL
James ButtAustraliaIvan Magalhaes PROPOSAL
Silvio SlusarskiAustraliaXuxue Feng NEGOTIATION
Sinclair WaycottGermanyAnna Fali QUALIFIED
Leja CaldareraArgentinaStephen Shaw UNQUALIFIED
Darci PoquetteGermanyAmy Elsner NEGOTIATION
Jefferson SchemmerUnited KingdomOnyama Limba QUALIFIED
Mayumi KolmetzItalyAmy Elsner NEGOTIATION
David DarakjyFranceIvan Magalhaes QUALIFIED
Jones VocelkaUnited KingdomXuxue Feng UNQUALIFIED
Silvio SlusarskiItalyStephen Shaw PROPOSAL
Octavia MaletSpainIvan Magalhaes PROPOSAL
Johnson SergiSpainAsiya Javayant PROPOSAL
Alejandro PerinUnited KingdomAsiya Javayant PROPOSAL
Ricardo GauchoFranceIvan Magalhaes RENEWAL
Wickens NestleFranceBernardo Dominic PROPOSAL
Ivar PaprockiBrazilOnyama Limba PROPOSAL
Tony FollerJapanOnyama Limba QUALIFIED
Juan WieserSpainAsiya Javayant NEW
Antonio CaudyJapanOnyama Limba NEGOTIATION
Stacey MacleadArgentinaIvan Magalhaes NEW
Jennifer AmigonIndiaAmy Elsner QUALIFIED
Mujtaba NickaRussiaStephen Shaw QUALIFIED
Costa DilliardBrazilXuxue Feng UNQUALIFIED
Aika InouyeCanadaElwin Sharvill RENEWAL
Claire TollnerCanadaAsiya Javayant QUALIFIED
Aditya KuskoItalyIoni Bowcher QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Ashley DoeArgentinaOnyama Limba QUALIFIED
Aditya KuskoItalyAsiya Javayant NEW
Misaki RoysterRussiaBernardo Dominic PROPOSAL
Johnson SergiJapanAmy Elsner UNQUALIFIED
Murillo MaletRussiaAmy Elsner NEW
Arvin AlbaresRussiaBernardo Dominic NEW
Murillo MaletItalyAmy Elsner UNQUALIFIED
Ashley DoeUnited KingdomIoni Bowcher RENEWAL
Emily WhobreyJapanIvan Magalhaes RENEWAL
Ricardo GauchoItalyXuxue Feng QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Antonio CaudyBrazil2026-06-05Printing Dimensions QUALIFIED37Elwin Sharvill
1001Mujtaba NickaRussia2026-05-31Chanay, Jeffrey A Esq UNQUALIFIED76Anna Fali
1002Munro FerenczArgentina2026-06-07Chemel, James L Cpa PROPOSAL44Ivan Magalhaes
1003Antonio CaudyFrance2026-06-12King, Christopher A Esq UNQUALIFIED0Stephen Shaw
1004Arvin AlbaresAustralia2026-05-28Printing Dimensions QUALIFIED82Bernardo Dominic
1005Leja CaldareraAustralia2026-05-23Rangoni Of Florence QUALIFIED46Anna Fali
1006Clifford RimBrazil2026-05-29Dorl, James J Esq UNQUALIFIED92Onyama Limba
1007Kadeem FlosiUnited Kingdom2026-06-07Feltz Printing Service NEW81Elwin Sharvill
1008Johnson SergiGermany2026-05-22Morlong Associates QUALIFIED48Stephen Shaw
1009Silvio SlusarskiIndia2026-06-14Chanay, Jeffrey A Esq QUALIFIED2Stephen Shaw
1010Leja CaldareraRussia2026-06-15Truhlar And Truhlar Attys PROPOSAL2Xuxue Feng
1011Kadeem FlosiFrance2026-06-14Printing Dimensions UNQUALIFIED5Bernardo Dominic
1012Rodrigues CampainFrance2026-05-30Truhlar And Truhlar Attys UNQUALIFIED86Stephen Shaw
1013Deepesh ChuiGermany2026-06-09Buckley Miller Wright UNQUALIFIED69Ioni Bowcher
1014Aditya KuskoSpain2026-06-02Commercial Press NEW79Stephen Shaw
1015Faith GillianItaly2026-06-07King, Christopher A Esq PROPOSAL60Ioni Bowcher
1016Chavez BriddickItaly2026-05-27Rangoni Of Florence NEW3Ioni Bowcher
1017Aika InouyeBrazil2026-06-10Truhlar And Truhlar Attys UNQUALIFIED3Bernardo Dominic
1018Isabel BowleyAustralia2026-06-08Feltz Printing Service RENEWAL41Ioni Bowcher
1019Adams MorascaBrazil2026-05-29Buckley Miller Wright QUALIFIED41Ioni Bowcher
1020Misaki RoysterArgentina2026-05-21Chapman, Ross E Esq NEGOTIATION0Anna Fali
1021Maisha RulapaughGermany2026-05-27Commercial Press PROPOSAL35Bernardo Dominic
1022Jones VocelkaFrance2026-06-04Truhlar And Truhlar Attys NEW60Onyama Limba
1023Juan WieserItaly2026-05-23Buckley Miller Wright PROPOSAL19Xuxue Feng
1024Morrow RutaRussia2026-05-25King, Christopher A Esq UNQUALIFIED91Anna Fali
1025Arvin AlbaresIndia2026-05-24Commercial Press NEW20Elwin Sharvill
1026David DarakjyGermany2026-06-15Rangoni Of Florence NEW23Xuxue Feng
1027Aika InouyeFrance2026-06-02Printing Dimensions NEGOTIATION23Stephen Shaw
1028Stacey MacleadIndia2026-06-19Feltz Printing Service NEGOTIATION50Asiya Javayant
1029Julie StensethAustralia2026-06-12Chapman, Ross E Esq QUALIFIED7Xuxue Feng
1030Leon OldroydGermany2026-06-10Feltz Printing Service UNQUALIFIED46Xuxue Feng
1031Jeanfrancois VenereAustralia2026-06-13Rangoni Of Florence NEGOTIATION42Elwin Sharvill
1032Aika InouyeUnited Kingdom2026-05-24Feltz Printing Service RENEWAL80Bernardo Dominic
1033Leja CaldareraCanada2026-05-22Buckley Miller Wright PROPOSAL83Xuxue Feng
1034Isabel BowleyRussia2026-06-15Buckley Miller Wright QUALIFIED34Anna Fali
1035Morrow RutaAustralia2026-05-23Feltz Printing Service QUALIFIED53Anna Fali
1036Jefferson SchemmerFrance2026-05-27Printing Dimensions PROPOSAL35Onyama Limba
1037Juan WieserUnited Kingdom2026-06-16Rousseaux, Michael Esq QUALIFIED50Amy Elsner
1038Munro FerenczAustralia2026-06-12King, Christopher A Esq PROPOSAL39Anna Fali
1039Stacey MacleadGermany2026-06-16Benton, John B Jr RENEWAL44Xuxue Feng
1040Antonio CaudyFrance2026-05-26Truhlar And Truhlar Attys QUALIFIED34Anna Fali
1041David DarakjyBrazil2026-05-26Dorl, James J Esq PROPOSAL85Anna Fali
1042Ricardo GauchoBrazil2026-06-08Feltz Printing Service UNQUALIFIED37Ivan Magalhaes
1043Stacey MacleadUnited Kingdom2026-05-24Chapman, Ross E Esq RENEWAL43Bernardo Dominic
1044Jones VocelkaCanada2026-06-12Dorl, James J Esq RENEWAL17Bernardo Dominic
1045Salvatore StockhamAustralia2026-06-04Rousseaux, Michael Esq PROPOSAL7Anna Fali
1046Misaki RoysterUnited Kingdom2026-06-17Feltz Printing Service PROPOSAL1Bernardo Dominic
1047Faith GillianIndia2026-06-13Commercial Press NEGOTIATION42Amy Elsner
1048Izzy GarufiItaly2026-06-04Printing Dimensions UNQUALIFIED26Bernardo Dominic
1049Munro FerenczGermany2026-06-07Printing Dimensions NEGOTIATION76Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Misaki RoysterSpainAmy Elsner QUALIFIED
Silvio SlusarskiCanadaAmy Elsner RENEWAL
Smith GlickJapanAmy Elsner NEGOTIATION
Mayumi KolmetzCanadaIvan Magalhaes NEW
James ButtJapanAnna Fali NEGOTIATION
Salvatore StockhamJapanAnna Fali UNQUALIFIED
Aruna FigeroaRussiaBernardo Dominic RENEWAL
Chavez BriddickRussiaBernardo Dominic RENEWAL
Antonio CaudyRussiaOnyama Limba RENEWAL
Jeanfrancois VenereGermanyIvan Magalhaes UNQUALIFIED
Julie StensethCanadaXuxue Feng QUALIFIED
Smith GlickSpainAsiya Javayant PROPOSAL
Clifford RimBrazilElwin Sharvill RENEWAL
Maisha RulapaughArgentinaAsiya Javayant RENEWAL
Misaki RoysterCanadaOnyama Limba UNQUALIFIED
Aditya KuskoIndiaAmy Elsner NEGOTIATION
Aruna FigeroaBrazilXuxue Feng NEGOTIATION
James ButtBrazilAnna Fali PROPOSAL
Antonio CaudyBrazilIoni Bowcher NEW
Alejandro PerinIndiaElwin Sharvill NEGOTIATION
Rodrigues CampainCanadaAmy Elsner RENEWAL
Ivar PaprockiJapanAmy Elsner NEW
Alejandro PerinGermanyAmy Elsner QUALIFIED
Ivar PaprockiBrazilStephen Shaw PROPOSAL
Aruna FigeroaItalyBernardo Dominic UNQUALIFIED
Julie StensethJapanIoni Bowcher UNQUALIFIED
Faith GillianBrazilIvan Magalhaes UNQUALIFIED
James ButtIndiaIoni Bowcher PROPOSAL
Alejandro PerinIndiaIvan Magalhaes PROPOSAL
Adams MorascaUnited KingdomXuxue Feng UNQUALIFIED
Aditya KuskoRussiaXuxue Feng NEGOTIATION
Ricardo GauchoJapanOnyama Limba NEGOTIATION
Isabel BowleyJapanIoni Bowcher RENEWAL
Jones VocelkaFranceStephen Shaw QUALIFIED
Arvin AlbaresAustraliaStephen Shaw PROPOSAL
Stacey MacleadRussiaAsiya Javayant UNQUALIFIED
Aditya KuskoAustraliaBernardo Dominic PROPOSAL
Ricardo GauchoSpainIvan Magalhaes RENEWAL
Mujtaba NickaJapanBernardo Dominic RENEWAL
Aika InouyeSpainAnna Fali RENEWAL
Aruna FigeroaJapanAsiya Javayant PROPOSAL
Misaki RoysterIndiaXuxue Feng UNQUALIFIED
Chavez BriddickSpainAnna Fali RENEWAL
Leon OldroydArgentinaAnna Fali NEGOTIATION
Salvatore StockhamSpainIvan Magalhaes UNQUALIFIED
Jefferson SchemmerAustraliaAsiya Javayant RENEWAL
Claire TollnerItalyAnna Fali NEGOTIATION
Claire TollnerJapanAmy Elsner RENEWAL
Julie StensethSpainIvan Magalhaes NEGOTIATION
Cody SaylorsArgentinaAmy Elsner QUALIFIED
Frozen Columns
Name
Leja Caldarera
Leja Caldarera
David Darakjy
Murillo Malet
Izzy Garufi
James Butt
David Darakjy
Leon Oldroyd
James Butt
Mujtaba Nicka
Chavez Briddick
Munro Ferencz
Chavez Briddick
Stacey Maclead
Claire Tollner
Arvin Albares
Clifford Rim
Rodrigues Campain
Jeanfrancois Venere
Antonio Caudy
Faith Gillian
Ivar Paprocki
Stacey Maclead
Smith Glick
Isabel Bowley
Deepesh Chui
Morrow Ruta
Munro Ferencz
Claire Tollner
Munro Ferencz
Silvio Slusarski
Claire Tollner
Alejandro Perin
Julie Stenseth
Isabel Bowley
Misaki Royster
Wickens Nestle
Antonio Caudy
Silvio Slusarski
Mayumi Kolmetz
Rodrigues Campain
Jeanfrancois Venere
Kaitlin Ostrosky
Munro Ferencz
Antonio Caudy
Aditya Kusko
Nicolas Iturbide
Aditya Kusko
Jefferson Schemmer
Arvin Albares
IdCountryDate
1000Australia2026-06-15
1001Brazil2026-06-12
1002Brazil2026-06-15
1003Canada2026-06-08
1004Argentina2026-05-22
1005Italy2026-06-17
1006United Kingdom2026-05-29
1007United Kingdom2026-06-07
1008India2026-06-11
1009Russia2026-06-16
1010Spain2026-06-17
1011United Kingdom2026-06-13
1012India2026-05-31
1013Australia2026-06-05
1014India2026-06-08
1015Japan2026-06-03
1016Germany2026-06-17
1017Canada2026-06-08
1018Canada2026-06-11
1019Germany2026-06-13
1020Germany2026-06-10
1021Italy2026-06-15
1022Russia2026-06-15
1023Germany2026-06-10
1024United Kingdom2026-06-07
1025Japan2026-06-12
1026India2026-05-31
1027Australia2026-05-31
1028Russia2026-06-17
1029India2026-06-15
1030Spain2026-05-24
1031Japan2026-05-24
1032Germany2026-06-03
1033Russia2026-05-28
1034Russia2026-06-07
1035Canada2026-06-16
1036United Kingdom2026-06-02
1037Japan2026-06-13
1038Argentina2026-06-02
1039India2026-05-25
1040Germany2026-05-28
1041Japan2026-06-18
1042India2026-06-13
1043India2026-05-21
1044Brazil2026-05-28
1045Russia2026-05-22
1046Germany2026-05-22
1047United Kingdom2026-06-04
1048United Kingdom2026-06-16
1049Brazil2026-05-25

On-Demand Data

NameIdCountryDate
Alejandro Perin1000Brazil2026-06-01
Ivar Paprocki1001Argentina2026-06-12
Munro Ferencz1002Spain2026-06-18
Nicolas Iturbide1003Italy2026-06-16
Francesco Shinko1004United Kingdom2026-06-04
Claire Tollner1005Russia2026-05-26
Stacey Maclead1006Australia2026-06-13
Smith Glick1007Japan2026-05-30
Adams Morasca1008India2026-06-15
Johnson Sergi1009United Kingdom2026-05-25
Rodrigues Campain1010Brazil2026-05-25
Stacey Maclead1011Russia2026-06-17
Jones Vocelka1012France2026-06-16
Leon Oldroyd1013Australia2026-05-25
Aditya Kusko1014United Kingdom2026-06-16
Adams Morasca1015Argentina2026-06-12
Wickens Nestle1016Brazil2026-05-29
Maisha Rulapaugh1017India2026-06-02
Jennifer Amigon1018Japan2026-06-19
Nicolas Iturbide1019Italy2026-06-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Silvio SlusarskiGermanyAmy Elsner RENEWAL
Ashley DoeIndiaIvan Magalhaes PROPOSAL
Ashley DoeArgentinaElwin Sharvill QUALIFIED
Silvio SlusarskiFranceElwin Sharvill PROPOSAL
Leon OldroydSpainOnyama Limba PROPOSAL
Morrow RutaAustraliaAsiya Javayant QUALIFIED
Sinclair WaycottFranceIvan Magalhaes QUALIFIED
Mayumi KolmetzUnited KingdomAsiya Javayant UNQUALIFIED
Costa DilliardRussiaBernardo Dominic RENEWAL
James ButtSpainOnyama Limba PROPOSAL
Mujtaba NickaSpainOnyama Limba QUALIFIED
Kadeem FlosiCanadaXuxue Feng NEGOTIATION
Francesco ShinkoRussiaElwin Sharvill RENEWAL
Aika InouyeUnited KingdomXuxue Feng RENEWAL
Adams MorascaRussiaOnyama Limba NEW
Darci PoquetteAustraliaIvan Magalhaes PROPOSAL
Jeanfrancois VenereArgentinaAsiya Javayant NEGOTIATION
Murillo MaletRussiaStephen Shaw NEGOTIATION
Ashley DoeSpainBernardo Dominic PROPOSAL
Ivar PaprockiAustraliaStephen Shaw QUALIFIED
Costa DilliardIndiaOnyama Limba RENEWAL
Juan WieserBrazilStephen Shaw NEGOTIATION
Wickens NestleJapanXuxue Feng UNQUALIFIED
Sinclair WaycottRussiaBernardo Dominic UNQUALIFIED
Maisha RulapaughUnited KingdomIvan Magalhaes UNQUALIFIED
Clifford RimRussiaOnyama Limba QUALIFIED
Munro FerenczItalyXuxue Feng RENEWAL
Stacey MacleadIndiaAnna Fali QUALIFIED
Jones VocelkaArgentinaIvan Magalhaes UNQUALIFIED
Antonio CaudyJapanElwin Sharvill QUALIFIED
Arvin AlbaresUnited KingdomElwin Sharvill QUALIFIED
Jones VocelkaAustraliaBernardo Dominic QUALIFIED
Costa DilliardFranceXuxue Feng PROPOSAL
Adams MorascaJapanIoni Bowcher PROPOSAL
David DarakjySpainStephen Shaw QUALIFIED
Cody SaylorsSpainAmy Elsner RENEWAL
Maisha RulapaughRussiaBernardo Dominic QUALIFIED
Jennifer AmigonBrazilIvan Magalhaes RENEWAL
Munro FerenczJapanXuxue Feng PROPOSAL
Murillo MaletAustraliaStephen Shaw 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>