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
Jones VocelkaItalyOnyama Limba UNQUALIFIED
Ricardo GauchoCanadaIvan Magalhaes QUALIFIED
Darci PoquetteCanadaOnyama Limba NEGOTIATION
David DarakjyFranceOnyama Limba PROPOSAL
Rodrigues CampainJapanIoni Bowcher QUALIFIED
Rodrigues CampainRussiaOnyama Limba QUALIFIED
Silvio SlusarskiArgentinaAsiya Javayant NEW
Johnson SergiIndiaOnyama Limba UNQUALIFIED
Jennifer AmigonFranceIoni Bowcher RENEWAL
Kaitlin OstroskyCanadaElwin Sharvill NEW
Ricardo GauchoIndiaIoni Bowcher NEW
Mujtaba NickaIndiaAmy Elsner PROPOSAL
Chavez BriddickJapanBernardo Dominic NEGOTIATION
Isabel BowleyAustraliaBernardo Dominic PROPOSAL
Mujtaba NickaUnited KingdomAnna Fali RENEWAL
Ivar PaprockiFranceElwin Sharvill PROPOSAL
Arvin AlbaresSpainStephen Shaw QUALIFIED
Munro FerenczIndiaStephen Shaw RENEWAL
Smith GlickAustraliaAmy Elsner NEGOTIATION
Isabel BowleyBrazilAnna Fali UNQUALIFIED
Jefferson SchemmerIndiaOnyama Limba RENEWAL
Kadeem FlosiItalyIoni Bowcher NEW
Nicolas IturbideJapanIvan Magalhaes RENEWAL
Silvio SlusarskiItalyStephen Shaw PROPOSAL
Julie StensethArgentinaAmy Elsner UNQUALIFIED
Emily WhobreyFranceIoni Bowcher PROPOSAL
Misaki RoysterUnited KingdomBernardo Dominic NEW
Wickens NestleArgentinaBernardo Dominic RENEWAL
Arvin AlbaresUnited KingdomIvan Magalhaes NEW
Darci PoquetteUnited KingdomBernardo Dominic QUALIFIED
Aruna FigeroaFranceAmy Elsner NEW
Darci PoquetteFranceIoni Bowcher UNQUALIFIED
Silvio SlusarskiBrazilXuxue Feng UNQUALIFIED
Clifford RimRussiaAmy Elsner NEGOTIATION
Maisha RulapaughItalyStephen Shaw QUALIFIED
Munro FerenczFranceAsiya Javayant UNQUALIFIED
Costa DilliardItalyXuxue Feng NEGOTIATION
Chavez BriddickRussiaBernardo Dominic UNQUALIFIED
Mayumi KolmetzFranceAsiya Javayant NEW
Rodrigues CampainCanadaElwin Sharvill UNQUALIFIED
Johnson SergiBrazilAnna Fali NEW
Tony FollerCanadaStephen Shaw PROPOSAL
Maisha RulapaughBrazilAsiya Javayant NEGOTIATION
Chavez BriddickAustraliaStephen Shaw RENEWAL
Stacey MacleadCanadaBernardo Dominic NEGOTIATION
Leja CaldareraAustraliaIvan Magalhaes QUALIFIED
Mayumi KolmetzCanadaIoni Bowcher RENEWAL
Chavez BriddickGermanyAnna Fali NEW
Mujtaba NickaArgentinaOnyama Limba RENEWAL
Jefferson SchemmerUnited KingdomIvan Magalhaes RENEWAL
Horizontal
NameCountryRepresentativeStatus
Claire TollnerIndiaXuxue Feng NEGOTIATION
Mujtaba NickaCanadaStephen Shaw UNQUALIFIED
Mujtaba NickaGermanyAnna Fali PROPOSAL
Nicolas IturbideGermanyXuxue Feng QUALIFIED
Rodrigues CampainUnited KingdomElwin Sharvill PROPOSAL
Murillo MaletJapanIoni Bowcher NEGOTIATION
Aika InouyeItalyBernardo Dominic NEGOTIATION
Kadeem FlosiRussiaIoni Bowcher NEW
Sinclair WaycottJapanAnna Fali RENEWAL
Mayumi KolmetzItalyXuxue Feng QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ivar PaprockiGermany2026-04-14Commercial Press RENEWAL32Onyama Limba
1001Jones VocelkaItaly2026-04-22Benton, John B Jr PROPOSAL26Anna Fali
1002Kadeem FlosiRussia2026-04-07Dorl, James J Esq UNQUALIFIED41Ivan Magalhaes
1003Ricardo GauchoFrance2026-04-14Chemel, James L Cpa NEW46Amy Elsner
1004Salvatore StockhamIndia2026-04-18Commercial Press UNQUALIFIED59Bernardo Dominic
1005Nicolas IturbideRussia2026-04-09Rangoni Of Florence QUALIFIED26Amy Elsner
1006Stacey MacleadCanada2026-04-16Truhlar And Truhlar Attys UNQUALIFIED78Asiya Javayant
1007Wickens NestleBrazil2026-04-08Chanay, Jeffrey A Esq QUALIFIED15Ioni Bowcher
1008Aika InouyeItaly2026-04-14Feiner Bros QUALIFIED48Bernardo Dominic
1009Johnson SergiRussia2026-04-28Feiner Bros NEGOTIATION20Ivan Magalhaes
1010Aika InouyeIndia2026-04-12Commercial Press PROPOSAL91Ioni Bowcher
1011Deepesh ChuiFrance2026-04-28Chanay, Jeffrey A Esq PROPOSAL13Asiya Javayant
1012David DarakjyJapan2026-04-14King, Christopher A Esq QUALIFIED71Elwin Sharvill
1013Arvin AlbaresArgentina2026-04-18Chanay, Jeffrey A Esq NEW57Stephen Shaw
1014Leon OldroydFrance2026-05-01Feiner Bros RENEWAL69Elwin Sharvill
1015Darci PoquetteArgentina2026-05-03Truhlar And Truhlar Attys NEGOTIATION80Bernardo Dominic
1016Clifford RimFrance2026-04-28Truhlar And Truhlar Attys QUALIFIED88Amy Elsner
1017Faith GillianAustralia2026-05-03Morlong Associates QUALIFIED93Bernardo Dominic
1018Octavia MaletItaly2026-04-26Morlong Associates QUALIFIED67Amy Elsner
1019Wickens NestleCanada2026-04-13Morlong Associates RENEWAL89Amy Elsner
1020Ivar PaprockiFrance2026-04-19Dorl, James J Esq QUALIFIED34Amy Elsner
1021Claire TollnerAustralia2026-04-26Chapman, Ross E Esq NEW71Stephen Shaw
1022Deepesh ChuiAustralia2026-05-01Rousseaux, Michael Esq UNQUALIFIED15Ivan Magalhaes
1023Ricardo GauchoArgentina2026-04-10Feiner Bros UNQUALIFIED41Anna Fali
1024Leon OldroydBrazil2026-04-13Chanay, Jeffrey A Esq NEGOTIATION51Asiya Javayant
1025Octavia MaletBrazil2026-04-26Morlong Associates PROPOSAL1Elwin Sharvill
1026Aika InouyeGermany2026-04-29Printing Dimensions NEW5Stephen Shaw
1027Emily WhobreyUnited Kingdom2026-04-17Chapman, Ross E Esq QUALIFIED24Bernardo Dominic
1028Claire TollnerArgentina2026-04-09Dorl, James J Esq RENEWAL7Elwin Sharvill
1029Arvin AlbaresBrazil2026-04-06Morlong Associates NEW77Ioni Bowcher
1030Mayumi KolmetzJapan2026-04-21Commercial Press NEW46Anna Fali
1031Salvatore StockhamJapan2026-04-27Buckley Miller Wright QUALIFIED74Onyama Limba
1032Arvin AlbaresGermany2026-04-17Chanay, Jeffrey A Esq QUALIFIED28Stephen Shaw
1033Mayumi KolmetzRussia2026-04-08Chemel, James L Cpa RENEWAL96Stephen Shaw
1034Sinclair WaycottRussia2026-05-03Rousseaux, Michael Esq NEGOTIATION90Elwin Sharvill
1035Julie StensethIndia2026-04-28Rousseaux, Michael Esq QUALIFIED83Onyama Limba
1036Wickens NestleGermany2026-04-21Truhlar And Truhlar Attys RENEWAL93Onyama Limba
1037Ivar PaprockiSpain2026-05-03Rangoni Of Florence UNQUALIFIED81Ivan Magalhaes
1038Deepesh ChuiJapan2026-04-15Buckley Miller Wright RENEWAL64Onyama Limba
1039Jennifer AmigonIndia2026-04-25Chapman, Ross E Esq QUALIFIED34Elwin Sharvill
1040Rodrigues CampainFrance2026-04-06Chemel, James L Cpa NEGOTIATION60Stephen Shaw
1041Octavia MaletSpain2026-04-04Chanay, Jeffrey A Esq QUALIFIED17Xuxue Feng
1042Octavia MaletItaly2026-04-19Commercial Press QUALIFIED30Ivan Magalhaes
1043James ButtItaly2026-04-07Chemel, James L Cpa NEGOTIATION40Ioni Bowcher
1044Clifford RimIndia2026-04-30Feiner Bros NEW4Ivan Magalhaes
1045Ashley DoeFrance2026-04-26Rousseaux, Michael Esq QUALIFIED53Anna Fali
1046Ashley DoeItaly2026-04-30Rangoni Of Florence NEGOTIATION69Elwin Sharvill
1047Adams MorascaItaly2026-04-23Chanay, Jeffrey A Esq PROPOSAL1Bernardo Dominic
1048Silvio SlusarskiFrance2026-04-18King, Christopher A Esq QUALIFIED99Ivan Magalhaes
1049Mujtaba NickaGermany2026-04-24Buckley Miller Wright QUALIFIED76Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Isabel BowleyBrazilAnna Fali UNQUALIFIED
Leja CaldareraGermanyIvan Magalhaes RENEWAL
Juan WieserSpainIoni Bowcher NEGOTIATION
Octavia MaletCanadaOnyama Limba PROPOSAL
Maisha RulapaughRussiaIoni Bowcher NEGOTIATION
Greenwood BologniaCanadaAsiya Javayant PROPOSAL
Tony FollerGermanyStephen Shaw QUALIFIED
Mayumi KolmetzJapanXuxue Feng PROPOSAL
Darci PoquetteSpainIoni Bowcher UNQUALIFIED
Greenwood BologniaFranceXuxue Feng NEW
Mayumi KolmetzAustraliaXuxue Feng NEW
Mujtaba NickaJapanIvan Magalhaes QUALIFIED
Ivar PaprockiRussiaAsiya Javayant UNQUALIFIED
Jennifer AmigonGermanyElwin Sharvill PROPOSAL
Mayumi KolmetzJapanAmy Elsner QUALIFIED
Misaki RoysterBrazilIvan Magalhaes PROPOSAL
Deepesh ChuiArgentinaStephen Shaw PROPOSAL
Smith GlickFranceElwin Sharvill UNQUALIFIED
Tony FollerCanadaBernardo Dominic NEW
Greenwood BologniaItalyOnyama Limba NEGOTIATION
Leon OldroydFranceElwin Sharvill RENEWAL
Chavez BriddickIndiaOnyama Limba NEGOTIATION
Chavez BriddickBrazilElwin Sharvill QUALIFIED
Juan WieserCanadaAnna Fali NEGOTIATION
Leja CaldareraGermanyBernardo Dominic RENEWAL
Misaki RoysterRussiaIvan Magalhaes NEGOTIATION
Adams MorascaItalyAsiya Javayant UNQUALIFIED
Smith GlickArgentinaAmy Elsner QUALIFIED
Deepesh ChuiFranceIvan Magalhaes NEGOTIATION
Francesco ShinkoAustraliaXuxue Feng PROPOSAL
Rodrigues CampainArgentinaStephen Shaw PROPOSAL
Kaitlin OstroskyCanadaAsiya Javayant QUALIFIED
Mayumi KolmetzIndiaAsiya Javayant RENEWAL
Salvatore StockhamIndiaBernardo Dominic UNQUALIFIED
Faith GillianRussiaXuxue Feng RENEWAL
Izzy GarufiArgentinaAnna Fali QUALIFIED
Smith GlickCanadaStephen Shaw RENEWAL
Jefferson SchemmerJapanIoni Bowcher NEGOTIATION
Aruna FigeroaGermanyBernardo Dominic PROPOSAL
David DarakjyRussiaAsiya Javayant NEGOTIATION
Ricardo GauchoCanadaXuxue Feng QUALIFIED
Kaitlin OstroskyIndiaBernardo Dominic RENEWAL
Francesco ShinkoJapanIvan Magalhaes QUALIFIED
Julie StensethItalyAnna Fali PROPOSAL
Mujtaba NickaIndiaStephen Shaw PROPOSAL
Francesco ShinkoArgentinaIvan Magalhaes UNQUALIFIED
Silvio SlusarskiRussiaIvan Magalhaes UNQUALIFIED
Clifford RimIndiaElwin Sharvill NEW
Misaki RoysterAustraliaAmy Elsner NEW
Antonio CaudyIndiaAsiya Javayant UNQUALIFIED
Frozen Columns
Name
Alejandro Perin
Leja Caldarera
Salvatore Stockham
Darci Poquette
Silvio Slusarski
Sinclair Waycott
Aditya Kusko
Cody Saylors
Emily Whobrey
Costa Dilliard
Leja Caldarera
Ivar Paprocki
Isabel Bowley
Jennifer Amigon
Jones Vocelka
Aruna Figeroa
Salvatore Stockham
Jeanfrancois Venere
Costa Dilliard
Mayumi Kolmetz
Aruna Figeroa
Isabel Bowley
Maria Marrier
Silvio Slusarski
Aika Inouye
Cody Saylors
Jones Vocelka
Clifford Rim
Francesco Shinko
Leja Caldarera
Wickens Nestle
Mayumi Kolmetz
Antonio Caudy
Leja Caldarera
Maria Marrier
Smith Glick
Mujtaba Nicka
Darci Poquette
Aditya Kusko
Salvatore Stockham
Ashley Doe
Silvio Slusarski
David Darakjy
Costa Dilliard
Aruna Figeroa
Antonio Caudy
Kaitlin Ostrosky
Antonio Caudy
David Darakjy
Claire Tollner
IdCountryDate
1000Japan2026-04-21
1001United Kingdom2026-04-24
1002Spain2026-04-25
1003United Kingdom2026-04-30
1004Russia2026-04-23
1005Argentina2026-04-28
1006Russia2026-04-23
1007Brazil2026-04-16
1008Australia2026-04-27
1009India2026-04-19
1010France2026-04-28
1011Japan2026-04-15
1012France2026-05-02
1013Australia2026-04-17
1014Russia2026-04-09
1015Argentina2026-04-15
1016Argentina2026-04-26
1017United Kingdom2026-04-12
1018France2026-04-20
1019Russia2026-04-12
1020Spain2026-04-29
1021Russia2026-04-29
1022India2026-04-30
1023Germany2026-04-16
1024India2026-04-24
1025Japan2026-05-01
1026France2026-04-12
1027India2026-04-27
1028Italy2026-04-22
1029Spain2026-04-13
1030Italy2026-04-10
1031Germany2026-04-06
1032France2026-04-15
1033Russia2026-04-27
1034Spain2026-04-23
1035Russia2026-04-09
1036Italy2026-04-13
1037Japan2026-04-11
1038Italy2026-04-11
1039Russia2026-04-29
1040Spain2026-04-19
1041Australia2026-04-29
1042Canada2026-04-10
1043Russia2026-04-28
1044Japan2026-04-11
1045France2026-05-02
1046Brazil2026-04-17
1047United Kingdom2026-04-12
1048Germany2026-04-08
1049Japan2026-04-15

On-Demand Data

NameIdCountryDate
Mujtaba Nicka1000France2026-05-01
Stacey Maclead1001Australia2026-04-09
Maria Marrier1002India2026-04-11
Jefferson Schemmer1003Argentina2026-04-23
Kadeem Flosi1004United Kingdom2026-04-14
Salvatore Stockham1005Japan2026-04-23
Deepesh Chui1006Brazil2026-04-17
Juan Wieser1007Argentina2026-05-03
Morrow Ruta1008Brazil2026-04-15
Francesco Shinko1009Russia2026-04-05
Ashley Doe1010France2026-04-25
Darci Poquette1011Germany2026-04-26
Jones Vocelka1012Canada2026-04-06
Antonio Caudy1013Brazil2026-04-09
Isabel Bowley1014Japan2026-04-27
Alejandro Perin1015Spain2026-04-16
Juan Wieser1016Canada2026-04-11
Jones Vocelka1017Brazil2026-04-25
Faith Gillian1018Canada2026-04-10
Stacey Maclead1019India2026-04-09
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Octavia MaletRussiaAsiya Javayant UNQUALIFIED
Alejandro PerinCanadaBernardo Dominic NEGOTIATION
Maria MarrierItalyAsiya Javayant RENEWAL
Aika InouyeUnited KingdomIoni Bowcher RENEWAL
Adams MorascaRussiaIoni Bowcher NEW
Stacey MacleadGermanyAnna Fali QUALIFIED
Leja CaldareraAustraliaAnna Fali NEW
Sinclair WaycottUnited KingdomIvan Magalhaes QUALIFIED
Murillo MaletItalyElwin Sharvill NEW
Jeanfrancois VenereGermanyAnna Fali UNQUALIFIED
Nicolas IturbideItalyAmy Elsner PROPOSAL
Rodrigues CampainGermanyAsiya Javayant NEGOTIATION
Munro FerenczJapanXuxue Feng QUALIFIED
David DarakjyFranceElwin Sharvill UNQUALIFIED
Stacey MacleadGermanyStephen Shaw NEGOTIATION
Smith GlickUnited KingdomAmy Elsner PROPOSAL
Jefferson SchemmerItalyIvan Magalhaes NEGOTIATION
Morrow RutaIndiaStephen Shaw PROPOSAL
Tony FollerAustraliaStephen Shaw NEW
Greenwood BologniaFranceBernardo Dominic NEW
Francesco ShinkoBrazilXuxue Feng NEGOTIATION
Silvio SlusarskiIndiaStephen Shaw RENEWAL
James ButtIndiaElwin Sharvill PROPOSAL
David DarakjyAustraliaElwin Sharvill NEGOTIATION
Ashley DoeArgentinaAsiya Javayant QUALIFIED
Nicolas IturbideCanadaIvan Magalhaes QUALIFIED
Leon OldroydGermanyIvan Magalhaes QUALIFIED
Jeanfrancois VenereFranceElwin Sharvill NEW
Julie StensethCanadaAnna Fali UNQUALIFIED
Alejandro PerinJapanOnyama Limba RENEWAL
Greenwood BologniaBrazilStephen Shaw QUALIFIED
Cody SaylorsArgentinaOnyama Limba NEW
Kadeem FlosiIndiaAmy Elsner NEGOTIATION
Smith GlickItalyAsiya Javayant NEW
James ButtItalyXuxue Feng RENEWAL
Maisha RulapaughCanadaStephen Shaw UNQUALIFIED
Deepesh ChuiBrazilXuxue Feng NEW
Isabel BowleyBrazilAsiya Javayant NEW
Tony FollerItalyAmy Elsner PROPOSAL
Morrow RutaAustraliaAnna Fali PROPOSAL

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