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
Isabel BowleyIndiaAmy Elsner PROPOSAL
Juan WieserJapanStephen Shaw RENEWAL
Aika InouyeJapanAsiya Javayant PROPOSAL
Wickens NestleCanadaAmy Elsner UNQUALIFIED
Julie StensethArgentinaAnna Fali UNQUALIFIED
Silvio SlusarskiIndiaAsiya Javayant NEGOTIATION
Munro FerenczCanadaAmy Elsner RENEWAL
Chavez BriddickCanadaOnyama Limba RENEWAL
Claire TollnerUnited KingdomElwin Sharvill QUALIFIED
Antonio CaudyCanadaIvan Magalhaes PROPOSAL
Arvin AlbaresGermanyBernardo Dominic NEW
Leja CaldareraCanadaElwin Sharvill NEW
Mujtaba NickaItalyIoni Bowcher NEGOTIATION
Emily WhobreyArgentinaOnyama Limba QUALIFIED
Jones VocelkaGermanyElwin Sharvill QUALIFIED
Darci PoquetteIndiaIoni Bowcher PROPOSAL
Antonio CaudyUnited KingdomAsiya Javayant QUALIFIED
Mayumi KolmetzArgentinaIoni Bowcher NEGOTIATION
Costa DilliardUnited KingdomAmy Elsner QUALIFIED
Kaitlin OstroskyItalyAnna Fali NEW
Costa DilliardBrazilOnyama Limba NEGOTIATION
Sinclair WaycottArgentinaAmy Elsner RENEWAL
Stacey MacleadIndiaStephen Shaw NEGOTIATION
Faith GillianFranceIoni Bowcher RENEWAL
Aruna FigeroaSpainAsiya Javayant PROPOSAL
Alejandro PerinUnited KingdomOnyama Limba NEGOTIATION
Misaki RoysterJapanIoni Bowcher UNQUALIFIED
Kaitlin OstroskyIndiaAsiya Javayant RENEWAL
Julie StensethArgentinaAsiya Javayant NEW
Jefferson SchemmerFranceBernardo Dominic RENEWAL
Aditya KuskoBrazilIoni Bowcher PROPOSAL
Munro FerenczJapanElwin Sharvill PROPOSAL
Claire TollnerUnited KingdomIoni Bowcher NEW
Greenwood BologniaCanadaElwin Sharvill NEW
Darci PoquetteJapanBernardo Dominic NEW
Aditya KuskoFranceAmy Elsner QUALIFIED
Leja CaldareraFranceElwin Sharvill RENEWAL
Clifford RimSpainStephen Shaw NEGOTIATION
Jeanfrancois VenereArgentinaIoni Bowcher NEW
Morrow RutaArgentinaStephen Shaw RENEWAL
David DarakjyJapanElwin Sharvill PROPOSAL
Misaki RoysterAustraliaAmy Elsner NEGOTIATION
Isabel BowleyItalyAnna Fali UNQUALIFIED
Antonio CaudySpainOnyama Limba NEGOTIATION
Smith GlickRussiaStephen Shaw PROPOSAL
Isabel BowleyArgentinaXuxue Feng NEW
Aditya KuskoSpainAnna Fali RENEWAL
Chavez BriddickBrazilXuxue Feng NEGOTIATION
Tony FollerGermanyStephen Shaw NEGOTIATION
Jefferson SchemmerAustraliaAmy Elsner NEW
Horizontal
NameCountryRepresentativeStatus
Greenwood BologniaGermanyAmy Elsner NEW
Aditya KuskoItalyStephen Shaw QUALIFIED
Johnson SergiBrazilAmy Elsner RENEWAL
Faith GillianUnited KingdomOnyama Limba QUALIFIED
Aruna FigeroaCanadaAnna Fali NEW
James ButtIndiaAsiya Javayant NEW
Aditya KuskoAustraliaBernardo Dominic QUALIFIED
Octavia MaletFranceAnna Fali RENEWAL
Octavia MaletSpainElwin Sharvill PROPOSAL
Smith GlickAustraliaAnna Fali QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Wickens NestleArgentina2026-06-01Feltz Printing Service NEW4Asiya Javayant
1001Ashley DoeJapan2026-05-12Benton, John B Jr QUALIFIED60Onyama Limba
1002Aditya KuskoFrance2026-06-04Dorl, James J Esq NEGOTIATION42Ioni Bowcher
1003Morrow RutaJapan2026-05-15Feltz Printing Service RENEWAL24Elwin Sharvill
1004Munro FerenczBrazil2026-05-24Feiner Bros UNQUALIFIED22Stephen Shaw
1005Darci PoquetteItaly2026-06-08Buckley Miller Wright RENEWAL57Ivan Magalhaes
1006Tony FollerJapan2026-05-25Feiner Bros NEGOTIATION98Xuxue Feng
1007Nicolas IturbideUnited Kingdom2026-05-12Morlong Associates UNQUALIFIED92Elwin Sharvill
1008Tony FollerRussia2026-06-07Truhlar And Truhlar Attys NEGOTIATION37Bernardo Dominic
1009Claire TollnerGermany2026-05-11Dorl, James J Esq RENEWAL1Stephen Shaw
1010Stacey MacleadArgentina2026-05-26Chemel, James L Cpa NEGOTIATION10Ioni Bowcher
1011Jeanfrancois VenereRussia2026-05-15Dorl, James J Esq NEW78Stephen Shaw
1012Sinclair WaycottSpain2026-05-30Dorl, James J Esq PROPOSAL66Onyama Limba
1013Ashley DoeGermany2026-05-13Benton, John B Jr QUALIFIED80Stephen Shaw
1014Alejandro PerinUnited Kingdom2026-05-29Buckley Miller Wright UNQUALIFIED64Bernardo Dominic
1015Francesco ShinkoCanada2026-06-09Dorl, James J Esq NEW60Stephen Shaw
1016Stacey MacleadBrazil2026-06-09Truhlar And Truhlar Attys NEGOTIATION49Bernardo Dominic
1017Rodrigues CampainArgentina2026-06-07Chemel, James L Cpa QUALIFIED34Bernardo Dominic
1018Wickens NestleArgentina2026-06-05Feltz Printing Service NEGOTIATION66Xuxue Feng
1019Rodrigues CampainBrazil2026-06-04Chanay, Jeffrey A Esq NEGOTIATION33Elwin Sharvill
1020Darci PoquetteIndia2026-05-22Rousseaux, Michael Esq UNQUALIFIED11Asiya Javayant
1021Leon OldroydIndia2026-05-19Rangoni Of Florence PROPOSAL5Ivan Magalhaes
1022Kaitlin OstroskyGermany2026-05-11Dorl, James J Esq RENEWAL94Ioni Bowcher
1023Aditya KuskoArgentina2026-05-11Dorl, James J Esq NEW59Bernardo Dominic
1024Johnson SergiItaly2026-05-18Benton, John B Jr UNQUALIFIED81Anna Fali
1025Chavez BriddickIndia2026-05-20Chapman, Ross E Esq PROPOSAL73Onyama Limba
1026Ashley DoeRussia2026-06-05Buckley Miller Wright RENEWAL55Stephen Shaw
1027Kaitlin OstroskyBrazil2026-06-07Feiner Bros QUALIFIED83Ivan Magalhaes
1028Julie StensethUnited Kingdom2026-05-30Commercial Press NEW4Bernardo Dominic
1029Izzy GarufiGermany2026-06-08Buckley Miller Wright NEGOTIATION38Onyama Limba
1030Kaitlin OstroskyAustralia2026-05-16Feiner Bros UNQUALIFIED86Bernardo Dominic
1031Morrow RutaSpain2026-05-21Rousseaux, Michael Esq UNQUALIFIED45Ivan Magalhaes
1032Misaki RoysterSpain2026-05-17Morlong Associates QUALIFIED17Amy Elsner
1033Costa DilliardArgentina2026-05-21Buckley Miller Wright UNQUALIFIED53Stephen Shaw
1034Emily WhobreyArgentina2026-05-12Rangoni Of Florence PROPOSAL70Ioni Bowcher
1035Jefferson SchemmerSpain2026-05-15Feiner Bros UNQUALIFIED34Ivan Magalhaes
1036Jefferson SchemmerUnited Kingdom2026-05-12Buckley Miller Wright QUALIFIED3Xuxue Feng
1037Morrow RutaCanada2026-06-04King, Christopher A Esq UNQUALIFIED77Ivan Magalhaes
1038Francesco ShinkoCanada2026-05-16Buckley Miller Wright NEGOTIATION63Bernardo Dominic
1039Aika InouyeGermany2026-06-09King, Christopher A Esq NEW36Ivan Magalhaes
1040Jones VocelkaAustralia2026-05-19Chemel, James L Cpa QUALIFIED38Asiya Javayant
1041Mayumi KolmetzItaly2026-05-27Benton, John B Jr RENEWAL18Xuxue Feng
1042Aruna FigeroaBrazil2026-05-28Dorl, James J Esq UNQUALIFIED72Stephen Shaw
1043Alejandro PerinItaly2026-05-30Chanay, Jeffrey A Esq NEW40Elwin Sharvill
1044Wickens NestleSpain2026-05-14Truhlar And Truhlar Attys RENEWAL71Stephen Shaw
1045Izzy GarufiBrazil2026-06-04Feiner Bros UNQUALIFIED69Ivan Magalhaes
1046Clifford RimJapan2026-06-02Dorl, James J Esq QUALIFIED70Asiya Javayant
1047Tony FollerItaly2026-05-29Buckley Miller Wright QUALIFIED70Ivan Magalhaes
1048Leon OldroydIndia2026-06-01King, Christopher A Esq RENEWAL76Ivan Magalhaes
1049Deepesh ChuiJapan2026-05-11Chapman, Ross E Esq QUALIFIED63Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
James ButtArgentinaXuxue Feng RENEWAL
Claire TollnerCanadaAsiya Javayant UNQUALIFIED
Kaitlin OstroskyIndiaStephen Shaw PROPOSAL
Clifford RimArgentinaIoni Bowcher RENEWAL
Silvio SlusarskiArgentinaElwin Sharvill UNQUALIFIED
Silvio SlusarskiAustraliaAnna Fali RENEWAL
Jones VocelkaBrazilBernardo Dominic NEGOTIATION
Wickens NestleArgentinaOnyama Limba RENEWAL
Aditya KuskoArgentinaElwin Sharvill NEGOTIATION
Arvin AlbaresJapanAsiya Javayant QUALIFIED
Chavez BriddickGermanyAsiya Javayant NEW
Aditya KuskoItalyIoni Bowcher NEW
James ButtJapanElwin Sharvill NEW
Maria MarrierAustraliaOnyama Limba QUALIFIED
Tony FollerGermanyIoni Bowcher QUALIFIED
Johnson SergiFranceOnyama Limba NEGOTIATION
James ButtAustraliaAsiya Javayant NEGOTIATION
Morrow RutaJapanAmy Elsner UNQUALIFIED
Juan WieserSpainOnyama Limba QUALIFIED
Deepesh ChuiArgentinaOnyama Limba UNQUALIFIED
Johnson SergiItalyBernardo Dominic NEGOTIATION
Stacey MacleadSpainXuxue Feng PROPOSAL
Izzy GarufiIndiaElwin Sharvill PROPOSAL
Munro FerenczIndiaOnyama Limba PROPOSAL
Aika InouyeFranceIoni Bowcher QUALIFIED
Octavia MaletBrazilStephen Shaw RENEWAL
Johnson SergiRussiaAmy Elsner PROPOSAL
Kadeem FlosiArgentinaIoni Bowcher QUALIFIED
Mayumi KolmetzSpainIoni Bowcher NEW
Rodrigues CampainGermanyIvan Magalhaes PROPOSAL
Alejandro PerinJapanIvan Magalhaes NEGOTIATION
Wickens NestleGermanyOnyama Limba UNQUALIFIED
Jennifer AmigonJapanIvan Magalhaes PROPOSAL
Clifford RimJapanXuxue Feng PROPOSAL
Adams MorascaRussiaAnna Fali UNQUALIFIED
Ivar PaprockiArgentinaXuxue Feng RENEWAL
Jeanfrancois VenereGermanyXuxue Feng QUALIFIED
Cody SaylorsJapanXuxue Feng UNQUALIFIED
Maria MarrierFranceAmy Elsner NEW
Deepesh ChuiBrazilBernardo Dominic NEGOTIATION
Francesco ShinkoSpainAmy Elsner NEGOTIATION
Smith GlickAustraliaIoni Bowcher QUALIFIED
Claire TollnerArgentinaAsiya Javayant QUALIFIED
Stacey MacleadJapanAmy Elsner NEW
Chavez BriddickSpainStephen Shaw UNQUALIFIED
Salvatore StockhamItalyElwin Sharvill PROPOSAL
Munro FerenczRussiaIvan Magalhaes PROPOSAL
Emily WhobreyGermanyAsiya Javayant NEGOTIATION
Jones VocelkaAustraliaXuxue Feng NEGOTIATION
Leja CaldareraRussiaStephen Shaw NEGOTIATION
Frozen Columns
Name
Leja Caldarera
Leon Oldroyd
Greenwood Bolognia
Jennifer Amigon
Cody Saylors
Isabel Bowley
Jones Vocelka
Wickens Nestle
Emily Whobrey
Rodrigues Campain
Greenwood Bolognia
Munro Ferencz
Nicolas Iturbide
Maisha Rulapaugh
Francesco Shinko
Jeanfrancois Venere
Rodrigues Campain
Costa Dilliard
Murillo Malet
Francesco Shinko
Kaitlin Ostrosky
Aditya Kusko
Stacey Maclead
Greenwood Bolognia
Francesco Shinko
Izzy Garufi
Jeanfrancois Venere
Faith Gillian
Leon Oldroyd
Aruna Figeroa
Claire Tollner
Tony Foller
Cody Saylors
Emily Whobrey
Antonio Caudy
Antonio Caudy
Murillo Malet
Aruna Figeroa
James Butt
Izzy Garufi
Izzy Garufi
Julie Stenseth
Juan Wieser
Murillo Malet
Silvio Slusarski
Jefferson Schemmer
Julie Stenseth
Jefferson Schemmer
Francesco Shinko
Alejandro Perin
IdCountryDate
1000Australia2026-05-28
1001Japan2026-05-23
1002Brazil2026-06-09
1003India2026-05-29
1004Spain2026-06-08
1005Argentina2026-06-02
1006Spain2026-06-03
1007United Kingdom2026-05-31
1008India2026-06-05
1009Spain2026-06-07
1010Brazil2026-05-20
1011Italy2026-05-19
1012Brazil2026-05-28
1013United Kingdom2026-05-12
1014Argentina2026-05-13
1015Japan2026-06-07
1016Italy2026-05-18
1017Canada2026-06-09
1018Canada2026-06-08
1019Argentina2026-05-16
1020Italy2026-05-18
1021Australia2026-05-19
1022Argentina2026-06-08
1023Argentina2026-05-29
1024Australia2026-05-25
1025Australia2026-05-16
1026Brazil2026-05-29
1027Argentina2026-05-19
1028Canada2026-05-20
1029Argentina2026-05-23
1030Brazil2026-05-30
1031Australia2026-05-21
1032Russia2026-06-03
1033Brazil2026-05-11
1034Japan2026-06-03
1035Japan2026-05-20
1036Japan2026-05-29
1037Brazil2026-05-22
1038United Kingdom2026-05-25
1039Italy2026-05-12
1040Spain2026-05-11
1041United Kingdom2026-06-06
1042India2026-05-17
1043Germany2026-05-21
1044Canada2026-05-22
1045India2026-05-19
1046Argentina2026-05-12
1047United Kingdom2026-05-13
1048United Kingdom2026-06-05
1049India2026-05-19

On-Demand Data

NameIdCountryDate
Faith Gillian1000Spain2026-06-07
Clifford Rim1001France2026-05-31
Cody Saylors1002Japan2026-06-08
Aditya Kusko1003Canada2026-05-14
Faith Gillian1004Spain2026-06-05
Isabel Bowley1005Russia2026-05-12
Nicolas Iturbide1006India2026-06-08
Sinclair Waycott1007Australia2026-05-31
Ricardo Gaucho1008Spain2026-05-31
Ricardo Gaucho1009Japan2026-06-07
Salvatore Stockham1010Argentina2026-05-15
Juan Wieser1011Japan2026-05-14
Salvatore Stockham1012Russia2026-05-29
Antonio Caudy1013France2026-05-14
Mujtaba Nicka1014Germany2026-05-11
Darci Poquette1015United Kingdom2026-05-24
Morrow Ruta1016France2026-05-29
Maisha Rulapaugh1017Canada2026-05-29
Kaitlin Ostrosky1018United Kingdom2026-05-25
Jefferson Schemmer1019Australia2026-05-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Izzy GarufiUnited KingdomElwin Sharvill UNQUALIFIED
Alejandro PerinArgentinaStephen Shaw PROPOSAL
Antonio CaudyIndiaAmy Elsner QUALIFIED
Sinclair WaycottBrazilBernardo Dominic RENEWAL
Stacey MacleadItalyAmy Elsner UNQUALIFIED
Ricardo GauchoItalyElwin Sharvill PROPOSAL
Munro FerenczUnited KingdomOnyama Limba UNQUALIFIED
Mujtaba NickaFranceElwin Sharvill NEW
Munro FerenczAustraliaBernardo Dominic QUALIFIED
Cody SaylorsGermanyAmy Elsner QUALIFIED
Francesco ShinkoIndiaOnyama Limba QUALIFIED
Smith GlickFranceAsiya Javayant QUALIFIED
Wickens NestleJapanAnna Fali NEW
Darci PoquetteJapanIoni Bowcher UNQUALIFIED
Jennifer AmigonSpainIvan Magalhaes PROPOSAL
Mujtaba NickaGermanyIvan Magalhaes NEW
Deepesh ChuiCanadaStephen Shaw NEW
Jones VocelkaCanadaXuxue Feng NEGOTIATION
Maisha RulapaughFranceXuxue Feng NEGOTIATION
Wickens NestleGermanyXuxue Feng PROPOSAL
Isabel BowleyBrazilAmy Elsner RENEWAL
Aditya KuskoGermanyAnna Fali UNQUALIFIED
Deepesh ChuiFranceOnyama Limba PROPOSAL
Johnson SergiGermanyOnyama Limba NEGOTIATION
Antonio CaudyGermanyOnyama Limba NEW
Faith GillianItalyAnna Fali PROPOSAL
Ashley DoeGermanyStephen Shaw PROPOSAL
Chavez BriddickFranceAnna Fali QUALIFIED
Salvatore StockhamIndiaIoni Bowcher QUALIFIED
Wickens NestleGermanyAnna Fali RENEWAL
Johnson SergiCanadaStephen Shaw QUALIFIED
Izzy GarufiGermanyOnyama Limba RENEWAL
Leja CaldareraGermanyAnna Fali UNQUALIFIED
Ashley DoeJapanElwin Sharvill NEGOTIATION
Misaki RoysterFranceBernardo Dominic QUALIFIED
Izzy GarufiArgentinaIoni Bowcher UNQUALIFIED
Tony FollerIndiaStephen Shaw QUALIFIED
Kaitlin OstroskyIndiaAmy Elsner PROPOSAL
Tony FollerGermanyIvan Magalhaes RENEWAL
Clifford RimBrazilBernardo Dominic NEGOTIATION

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