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
Octavia MaletAustraliaAmy Elsner PROPOSAL
Jones VocelkaCanadaElwin Sharvill PROPOSAL
Cody SaylorsRussiaElwin Sharvill NEGOTIATION
Kadeem FlosiJapanIvan Magalhaes UNQUALIFIED
Costa DilliardArgentinaIoni Bowcher PROPOSAL
Costa DilliardArgentinaAnna Fali UNQUALIFIED
Francesco ShinkoAustraliaAnna Fali UNQUALIFIED
Kadeem FlosiUnited KingdomAsiya Javayant NEGOTIATION
Alejandro PerinCanadaAsiya Javayant PROPOSAL
Juan WieserAustraliaIoni Bowcher RENEWAL
Kadeem FlosiSpainElwin Sharvill PROPOSAL
Cody SaylorsItalyOnyama Limba UNQUALIFIED
Mujtaba NickaIndiaIoni Bowcher PROPOSAL
Octavia MaletItalyAnna Fali RENEWAL
Aika InouyeAustraliaIvan Magalhaes RENEWAL
Johnson SergiAustraliaOnyama Limba NEW
Silvio SlusarskiGermanyElwin Sharvill UNQUALIFIED
Maisha RulapaughCanadaAmy Elsner RENEWAL
David DarakjyRussiaAsiya Javayant NEGOTIATION
Silvio SlusarskiUnited KingdomIoni Bowcher QUALIFIED
Ivar PaprockiAustraliaBernardo Dominic NEW
Morrow RutaFranceXuxue Feng NEGOTIATION
Cody SaylorsArgentinaIoni Bowcher RENEWAL
Chavez BriddickRussiaOnyama Limba PROPOSAL
Mujtaba NickaArgentinaElwin Sharvill PROPOSAL
Antonio CaudyGermanyStephen Shaw NEW
Leon OldroydJapanIvan Magalhaes QUALIFIED
Jones VocelkaAustraliaAmy Elsner QUALIFIED
Salvatore StockhamArgentinaOnyama Limba PROPOSAL
Ivar PaprockiSpainElwin Sharvill PROPOSAL
Isabel BowleyRussiaElwin Sharvill PROPOSAL
Greenwood BologniaBrazilStephen Shaw NEGOTIATION
Julie StensethBrazilIoni Bowcher PROPOSAL
Tony FollerGermanyAnna Fali UNQUALIFIED
Emily WhobreyGermanyBernardo Dominic RENEWAL
Francesco ShinkoItalyAmy Elsner NEGOTIATION
Kadeem FlosiArgentinaElwin Sharvill PROPOSAL
Murillo MaletBrazilElwin Sharvill RENEWAL
Johnson SergiItalyAnna Fali NEGOTIATION
Emily WhobreyIndiaElwin Sharvill NEW
Ashley DoeAustraliaIoni Bowcher UNQUALIFIED
Greenwood BologniaJapanStephen Shaw NEW
James ButtGermanyStephen Shaw NEW
Sinclair WaycottFranceStephen Shaw PROPOSAL
Salvatore StockhamFranceIoni Bowcher QUALIFIED
Salvatore StockhamArgentinaAmy Elsner UNQUALIFIED
Misaki RoysterJapanBernardo Dominic RENEWAL
Mayumi KolmetzCanadaElwin Sharvill RENEWAL
Ricardo GauchoSpainBernardo Dominic NEGOTIATION
Aruna FigeroaFranceOnyama Limba UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Leon OldroydFranceElwin Sharvill NEW
Greenwood BologniaIndiaAnna Fali PROPOSAL
Maria MarrierArgentinaAnna Fali QUALIFIED
Claire TollnerGermanyIoni Bowcher NEW
Tony FollerBrazilAmy Elsner RENEWAL
Julie StensethArgentinaIvan Magalhaes NEGOTIATION
Jefferson SchemmerRussiaElwin Sharvill UNQUALIFIED
Octavia MaletSpainAsiya Javayant UNQUALIFIED
Cody SaylorsFranceBernardo Dominic NEW
Claire TollnerSpainIvan Magalhaes PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Smith GlickSpain2026-04-30Benton, John B Jr PROPOSAL39Asiya Javayant
1001Deepesh ChuiSpain2026-05-13Morlong Associates RENEWAL78Stephen Shaw
1002Leja CaldareraJapan2026-05-02Chapman, Ross E Esq PROPOSAL67Bernardo Dominic
1003Costa DilliardBrazil2026-05-02Morlong Associates QUALIFIED76Onyama Limba
1004Faith GillianJapan2026-05-15Buckley Miller Wright NEGOTIATION80Ivan Magalhaes
1005Leon OldroydJapan2026-04-30Feltz Printing Service UNQUALIFIED6Onyama Limba
1006Aruna FigeroaFrance2026-05-13Truhlar And Truhlar Attys NEW18Bernardo Dominic
1007Ivar PaprockiUnited Kingdom2026-04-23Printing Dimensions PROPOSAL12Bernardo Dominic
1008Maisha RulapaughArgentina2026-05-17King, Christopher A Esq UNQUALIFIED52Ivan Magalhaes
1009Ricardo GauchoItaly2026-05-06Commercial Press QUALIFIED19Ioni Bowcher
1010Wickens NestleCanada2026-04-26Feltz Printing Service UNQUALIFIED98Bernardo Dominic
1011Jefferson SchemmerItaly2026-05-06Rousseaux, Michael Esq UNQUALIFIED63Anna Fali
1012Clifford RimItaly2026-05-03Chapman, Ross E Esq NEGOTIATION16Stephen Shaw
1013Salvatore StockhamRussia2026-04-22Rousseaux, Michael Esq NEW61Asiya Javayant
1014Rodrigues CampainGermany2026-05-12Benton, John B Jr UNQUALIFIED40Anna Fali
1015Costa DilliardItaly2026-05-08Rousseaux, Michael Esq RENEWAL60Anna Fali
1016Izzy GarufiAustralia2026-04-23Dorl, James J Esq QUALIFIED47Xuxue Feng
1017Kadeem FlosiIndia2026-05-08Chanay, Jeffrey A Esq RENEWAL28Onyama Limba
1018Munro FerenczGermany2026-05-09Buckley Miller Wright QUALIFIED67Bernardo Dominic
1019Claire TollnerBrazil2026-05-19Rangoni Of Florence NEGOTIATION39Elwin Sharvill
1020Silvio SlusarskiAustralia2026-05-05Truhlar And Truhlar Attys UNQUALIFIED14Bernardo Dominic
1021Isabel BowleyArgentina2026-05-15Printing Dimensions NEW76Elwin Sharvill
1022Tony FollerArgentina2026-04-23Benton, John B Jr PROPOSAL26Stephen Shaw
1023Adams MorascaCanada2026-05-18Rangoni Of Florence NEGOTIATION87Amy Elsner
1024Wickens NestleFrance2026-05-03Printing Dimensions UNQUALIFIED58Xuxue Feng
1025Leon OldroydSpain2026-05-06Morlong Associates NEGOTIATION23Elwin Sharvill
1026Cody SaylorsJapan2026-04-23Chanay, Jeffrey A Esq UNQUALIFIED98Anna Fali
1027Claire TollnerGermany2026-05-20Chanay, Jeffrey A Esq RENEWAL69Ioni Bowcher
1028Maria MarrierGermany2026-05-13Feltz Printing Service QUALIFIED67Ioni Bowcher
1029Jones VocelkaArgentina2026-05-19Feiner Bros PROPOSAL42Anna Fali
1030Ashley DoeAustralia2026-04-21Rousseaux, Michael Esq QUALIFIED35Anna Fali
1031Deepesh ChuiIndia2026-05-12Rangoni Of Florence QUALIFIED55Amy Elsner
1032Mayumi KolmetzAustralia2026-05-14Buckley Miller Wright NEW89Stephen Shaw
1033Leon OldroydSpain2026-04-21Rangoni Of Florence QUALIFIED5Elwin Sharvill
1034Stacey MacleadFrance2026-04-22Commercial Press UNQUALIFIED43Bernardo Dominic
1035Darci PoquetteBrazil2026-05-15Chapman, Ross E Esq RENEWAL97Asiya Javayant
1036Misaki RoysterBrazil2026-05-02Truhlar And Truhlar Attys UNQUALIFIED59Asiya Javayant
1037Jefferson SchemmerCanada2026-05-16Chemel, James L Cpa NEW38Onyama Limba
1038Ashley DoeFrance2026-05-09Commercial Press QUALIFIED77Elwin Sharvill
1039James ButtFrance2026-05-18Chemel, James L Cpa PROPOSAL23Xuxue Feng
1040Sinclair WaycottJapan2026-05-07Truhlar And Truhlar Attys RENEWAL76Onyama Limba
1041Cody SaylorsCanada2026-05-14Dorl, James J Esq QUALIFIED7Anna Fali
1042Maria MarrierJapan2026-05-10Buckley Miller Wright NEW33Anna Fali
1043James ButtRussia2026-05-17Dorl, James J Esq NEGOTIATION30Ivan Magalhaes
1044Izzy GarufiUnited Kingdom2026-04-29Chanay, Jeffrey A Esq NEGOTIATION91Stephen Shaw
1045Claire TollnerItaly2026-05-16Rousseaux, Michael Esq RENEWAL42Stephen Shaw
1046Darci PoquetteItaly2026-05-15Chapman, Ross E Esq QUALIFIED20Ioni Bowcher
1047Emily WhobreyJapan2026-05-14Truhlar And Truhlar Attys NEW73Ioni Bowcher
1048Morrow RutaCanada2026-04-22Rousseaux, Michael Esq QUALIFIED66Ivan Magalhaes
1049Emily WhobreyAustralia2026-05-16Dorl, James J Esq PROPOSAL25Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Jennifer AmigonFranceIvan Magalhaes RENEWAL
Morrow RutaArgentinaStephen Shaw PROPOSAL
Misaki RoysterBrazilStephen Shaw NEGOTIATION
Francesco ShinkoItalyStephen Shaw NEW
Maria MarrierJapanAnna Fali UNQUALIFIED
Clifford RimAustraliaBernardo Dominic NEW
Clifford RimJapanOnyama Limba PROPOSAL
Julie StensethGermanyStephen Shaw NEGOTIATION
Greenwood BologniaArgentinaBernardo Dominic UNQUALIFIED
Sinclair WaycottArgentinaXuxue Feng UNQUALIFIED
Darci PoquetteRussiaXuxue Feng RENEWAL
Kaitlin OstroskyJapanIvan Magalhaes RENEWAL
Greenwood BologniaCanadaStephen Shaw UNQUALIFIED
Arvin AlbaresAustraliaBernardo Dominic UNQUALIFIED
Chavez BriddickFranceBernardo Dominic UNQUALIFIED
Misaki RoysterArgentinaElwin Sharvill RENEWAL
Clifford RimJapanIoni Bowcher UNQUALIFIED
Ashley DoeRussiaIoni Bowcher NEW
James ButtJapanOnyama Limba PROPOSAL
Aditya KuskoSpainIvan Magalhaes PROPOSAL
Silvio SlusarskiJapanBernardo Dominic NEGOTIATION
Wickens NestleJapanStephen Shaw NEGOTIATION
Tony FollerSpainAmy Elsner QUALIFIED
Mujtaba NickaCanadaBernardo Dominic RENEWAL
Misaki RoysterBrazilAmy Elsner QUALIFIED
Jones VocelkaRussiaElwin Sharvill RENEWAL
Murillo MaletFranceAmy Elsner NEGOTIATION
Morrow RutaRussiaAnna Fali UNQUALIFIED
Francesco ShinkoFranceXuxue Feng QUALIFIED
Kaitlin OstroskyGermanyOnyama Limba NEGOTIATION
Jefferson SchemmerUnited KingdomAmy Elsner QUALIFIED
Claire TollnerBrazilStephen Shaw NEGOTIATION
Aditya KuskoRussiaXuxue Feng NEGOTIATION
Faith GillianArgentinaXuxue Feng RENEWAL
Aika InouyeFranceIoni Bowcher NEGOTIATION
Isabel BowleySpainAnna Fali UNQUALIFIED
Isabel BowleyCanadaAmy Elsner NEGOTIATION
James ButtFranceElwin Sharvill NEGOTIATION
Jeanfrancois VenereRussiaStephen Shaw RENEWAL
Julie StensethSpainAsiya Javayant QUALIFIED
Kadeem FlosiArgentinaAsiya Javayant RENEWAL
Isabel BowleyFranceIoni Bowcher QUALIFIED
Cody SaylorsUnited KingdomXuxue Feng RENEWAL
Jones VocelkaCanadaAmy Elsner UNQUALIFIED
Wickens NestleIndiaIvan Magalhaes NEW
Maisha RulapaughCanadaAmy Elsner QUALIFIED
Juan WieserGermanyAmy Elsner RENEWAL
Aruna FigeroaSpainAsiya Javayant RENEWAL
Juan WieserFranceXuxue Feng RENEWAL
Ricardo GauchoItalyBernardo Dominic RENEWAL
Frozen Columns
Name
Maisha Rulapaugh
Sinclair Waycott
Rodrigues Campain
Smith Glick
Kaitlin Ostrosky
Maisha Rulapaugh
Darci Poquette
Jennifer Amigon
Sinclair Waycott
Silvio Slusarski
Morrow Ruta
Jeanfrancois Venere
Smith Glick
Ivar Paprocki
Deepesh Chui
Arvin Albares
Ashley Doe
Clifford Rim
Leja Caldarera
Juan Wieser
Greenwood Bolognia
Ricardo Gaucho
Emily Whobrey
Misaki Royster
Kadeem Flosi
Jones Vocelka
Greenwood Bolognia
Darci Poquette
Maria Marrier
Jeanfrancois Venere
Emily Whobrey
Greenwood Bolognia
Nicolas Iturbide
Octavia Malet
Francesco Shinko
Juan Wieser
Wickens Nestle
Ricardo Gaucho
Clifford Rim
Izzy Garufi
Antonio Caudy
Tony Foller
Emily Whobrey
Jefferson Schemmer
Wickens Nestle
Rodrigues Campain
Morrow Ruta
Aika Inouye
Leja Caldarera
Costa Dilliard
IdCountryDate
1000Canada2026-05-14
1001Japan2026-05-07
1002Italy2026-04-29
1003Spain2026-04-29
1004Australia2026-04-25
1005Spain2026-05-09
1006Spain2026-05-16
1007United Kingdom2026-04-21
1008Spain2026-05-02
1009Argentina2026-05-04
1010Argentina2026-05-04
1011Italy2026-04-21
1012Russia2026-05-17
1013Germany2026-05-19
1014Canada2026-05-12
1015Brazil2026-04-25
1016Germany2026-05-04
1017Australia2026-05-01
1018Russia2026-05-12
1019Italy2026-05-01
1020Argentina2026-04-21
1021India2026-04-22
1022Russia2026-05-06
1023United Kingdom2026-04-26
1024Australia2026-05-11
1025Spain2026-05-02
1026Germany2026-05-17
1027India2026-05-18
1028Brazil2026-05-05
1029Argentina2026-05-05
1030United Kingdom2026-04-30
1031Russia2026-05-05
1032Italy2026-05-20
1033United Kingdom2026-05-20
1034Japan2026-04-27
1035Australia2026-05-08
1036United Kingdom2026-04-24
1037Argentina2026-05-09
1038France2026-04-21
1039Argentina2026-05-15
1040Germany2026-05-12
1041India2026-04-25
1042United Kingdom2026-05-04
1043Australia2026-05-16
1044Japan2026-04-27
1045United Kingdom2026-04-29
1046Brazil2026-05-18
1047Japan2026-05-16
1048Canada2026-04-30
1049Australia2026-05-19

On-Demand Data

NameIdCountryDate
Faith Gillian1000Germany2026-05-07
Aruna Figeroa1001Japan2026-05-12
Silvio Slusarski1002Spain2026-05-13
Mujtaba Nicka1003Australia2026-05-19
Ashley Doe1004Argentina2026-04-26
Mujtaba Nicka1005Japan2026-05-09
David Darakjy1006United Kingdom2026-05-10
Costa Dilliard1007Canada2026-04-29
Munro Ferencz1008India2026-04-25
Antonio Caudy1009Argentina2026-05-20
Misaki Royster1010Brazil2026-05-06
Aika Inouye1011Japan2026-05-14
Costa Dilliard1012Spain2026-04-21
Kaitlin Ostrosky1013Russia2026-05-05
Emily Whobrey1014Italy2026-05-04
Julie Stenseth1015Germany2026-05-10
David Darakjy1016Italy2026-05-09
Greenwood Bolognia1017Canada2026-05-18
Claire Tollner1018Germany2026-04-23
Mayumi Kolmetz1019Argentina2026-04-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jennifer AmigonRussiaBernardo Dominic RENEWAL
Claire TollnerBrazilXuxue Feng UNQUALIFIED
Kaitlin OstroskyFranceXuxue Feng UNQUALIFIED
Leja CaldareraJapanElwin Sharvill NEGOTIATION
Antonio CaudyIndiaAnna Fali RENEWAL
Murillo MaletSpainAmy Elsner NEGOTIATION
Jones VocelkaRussiaIoni Bowcher NEW
Kadeem FlosiJapanIvan Magalhaes RENEWAL
Chavez BriddickItalyElwin Sharvill PROPOSAL
Jones VocelkaIndiaElwin Sharvill NEW
Cody SaylorsAustraliaElwin Sharvill NEW
Wickens NestleIndiaAsiya Javayant NEW
Deepesh ChuiFranceIvan Magalhaes RENEWAL
Jefferson SchemmerAustraliaBernardo Dominic NEW
Salvatore StockhamJapanAsiya Javayant QUALIFIED
Leja CaldareraArgentinaElwin Sharvill PROPOSAL
Tony FollerBrazilXuxue Feng QUALIFIED
Mayumi KolmetzIndiaElwin Sharvill RENEWAL
Mujtaba NickaRussiaOnyama Limba QUALIFIED
Alejandro PerinBrazilIvan Magalhaes NEGOTIATION
Julie StensethUnited KingdomBernardo Dominic UNQUALIFIED
Alejandro PerinArgentinaBernardo Dominic PROPOSAL
Leon OldroydGermanyXuxue Feng QUALIFIED
Greenwood BologniaRussiaBernardo Dominic UNQUALIFIED
Morrow RutaIndiaOnyama Limba NEW
Isabel BowleyFranceAmy Elsner NEW
Costa DilliardAustraliaOnyama Limba PROPOSAL
Rodrigues CampainFranceStephen Shaw NEW
Juan WieserAustraliaAnna Fali QUALIFIED
Morrow RutaArgentinaBernardo Dominic QUALIFIED
Mayumi KolmetzGermanyBernardo Dominic NEW
Ashley DoeCanadaOnyama Limba PROPOSAL
Francesco ShinkoBrazilBernardo Dominic QUALIFIED
Nicolas IturbideBrazilIoni Bowcher RENEWAL
Jefferson SchemmerSpainOnyama Limba PROPOSAL
Jones VocelkaRussiaAsiya Javayant QUALIFIED
Murillo MaletRussiaBernardo Dominic NEW
Isabel BowleyBrazilIvan Magalhaes PROPOSAL
Misaki RoysterJapanAnna Fali QUALIFIED
Ricardo GauchoJapanAsiya Javayant 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>