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
Juan WieserSpainBernardo Dominic NEGOTIATION
Sinclair WaycottCanadaAnna Fali RENEWAL
Greenwood BologniaJapanXuxue Feng PROPOSAL
Leon OldroydIndiaIoni Bowcher RENEWAL
Clifford RimSpainIvan Magalhaes QUALIFIED
Aika InouyeArgentinaAsiya Javayant NEW
Mayumi KolmetzRussiaXuxue Feng QUALIFIED
Juan WieserCanadaBernardo Dominic UNQUALIFIED
Stacey MacleadAustraliaOnyama Limba QUALIFIED
Faith GillianSpainAmy Elsner PROPOSAL
Emily WhobreyAustraliaIvan Magalhaes UNQUALIFIED
Rodrigues CampainUnited KingdomAnna Fali UNQUALIFIED
Smith GlickGermanyIvan Magalhaes NEGOTIATION
Ivar PaprockiAustraliaBernardo Dominic UNQUALIFIED
Mujtaba NickaAustraliaStephen Shaw NEW
Leon OldroydFranceAsiya Javayant QUALIFIED
Costa DilliardItalyIvan Magalhaes NEGOTIATION
Julie StensethBrazilIoni Bowcher UNQUALIFIED
Munro FerenczSpainBernardo Dominic UNQUALIFIED
Jones VocelkaJapanXuxue Feng UNQUALIFIED
Maisha RulapaughRussiaAmy Elsner NEW
Johnson SergiAustraliaBernardo Dominic QUALIFIED
Salvatore StockhamAustraliaXuxue Feng RENEWAL
James ButtJapanIvan Magalhaes RENEWAL
Murillo MaletJapanOnyama Limba QUALIFIED
Ivar PaprockiAustraliaAsiya Javayant QUALIFIED
Leon OldroydUnited KingdomIvan Magalhaes UNQUALIFIED
Leon OldroydJapanElwin Sharvill NEW
Tony FollerBrazilAmy Elsner PROPOSAL
Faith GillianArgentinaXuxue Feng PROPOSAL
Jennifer AmigonArgentinaXuxue Feng UNQUALIFIED
Silvio SlusarskiBrazilOnyama Limba QUALIFIED
Clifford RimItalyOnyama Limba UNQUALIFIED
Leon OldroydGermanyIvan Magalhaes NEGOTIATION
Leja CaldareraAustraliaBernardo Dominic QUALIFIED
Antonio CaudyCanadaBernardo Dominic QUALIFIED
Nicolas IturbideItalyStephen Shaw QUALIFIED
Arvin AlbaresIndiaAsiya Javayant NEW
Jones VocelkaAustraliaBernardo Dominic UNQUALIFIED
Clifford RimArgentinaAnna Fali QUALIFIED
Kadeem FlosiBrazilIvan Magalhaes NEGOTIATION
Greenwood BologniaAustraliaIvan Magalhaes UNQUALIFIED
Alejandro PerinItalyIvan Magalhaes NEGOTIATION
Morrow RutaAustraliaIvan Magalhaes NEW
Morrow RutaSpainStephen Shaw QUALIFIED
Deepesh ChuiCanadaAsiya Javayant UNQUALIFIED
Isabel BowleyIndiaAsiya Javayant NEGOTIATION
Isabel BowleyBrazilBernardo Dominic QUALIFIED
Leon OldroydBrazilXuxue Feng NEW
Juan WieserBrazilOnyama Limba UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Mujtaba NickaFranceStephen Shaw NEW
Izzy GarufiRussiaElwin Sharvill UNQUALIFIED
Ivar PaprockiJapanAsiya Javayant UNQUALIFIED
Arvin AlbaresItalyStephen Shaw QUALIFIED
Juan WieserAustraliaIvan Magalhaes PROPOSAL
James ButtItalyIvan Magalhaes QUALIFIED
Octavia MaletUnited KingdomStephen Shaw NEW
James ButtIndiaIoni Bowcher QUALIFIED
Tony FollerCanadaAnna Fali UNQUALIFIED
Jeanfrancois VenereIndiaIoni Bowcher NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Alejandro PerinAustralia2026-05-30Benton, John B Jr NEGOTIATION27Onyama Limba
1001Ashley DoeIndia2026-05-20Chemel, James L Cpa NEW60Ioni Bowcher
1002James ButtUnited Kingdom2026-05-09Chapman, Ross E Esq UNQUALIFIED3Elwin Sharvill
1003Mujtaba NickaItaly2026-05-24Rangoni Of Florence RENEWAL92Xuxue Feng
1004Claire TollnerItaly2026-05-28Benton, John B Jr UNQUALIFIED78Xuxue Feng
1005Stacey MacleadAustralia2026-06-01Dorl, James J Esq UNQUALIFIED27Ivan Magalhaes
1006Misaki RoysterItaly2026-05-16Morlong Associates PROPOSAL21Elwin Sharvill
1007Darci PoquetteJapan2026-05-16Printing Dimensions UNQUALIFIED37Bernardo Dominic
1008Jefferson SchemmerJapan2026-05-20Truhlar And Truhlar Attys NEGOTIATION1Elwin Sharvill
1009Faith GillianCanada2026-06-03Truhlar And Truhlar Attys PROPOSAL38Ioni Bowcher
1010Adams MorascaRussia2026-05-14Chemel, James L Cpa RENEWAL52Bernardo Dominic
1011Aditya KuskoBrazil2026-05-18Rousseaux, Michael Esq NEW7Bernardo Dominic
1012Munro FerenczItaly2026-06-01Rangoni Of Florence PROPOSAL72Anna Fali
1013Smith GlickAustralia2026-05-24Chapman, Ross E Esq UNQUALIFIED45Onyama Limba
1014Kadeem FlosiItaly2026-05-05Rousseaux, Michael Esq QUALIFIED96Stephen Shaw
1015Clifford RimArgentina2026-05-23Chapman, Ross E Esq PROPOSAL55Bernardo Dominic
1016Mujtaba NickaIndia2026-06-02Truhlar And Truhlar Attys NEGOTIATION51Asiya Javayant
1017Adams MorascaGermany2026-05-07Chemel, James L Cpa RENEWAL54Bernardo Dominic
1018Darci PoquetteJapan2026-05-25Benton, John B Jr NEW54Xuxue Feng
1019Kaitlin OstroskyArgentina2026-05-05Rousseaux, Michael Esq NEW20Elwin Sharvill
1020Mayumi KolmetzJapan2026-05-25Rangoni Of Florence UNQUALIFIED37Onyama Limba
1021Mayumi KolmetzAustralia2026-06-03King, Christopher A Esq QUALIFIED33Anna Fali
1022Costa DilliardBrazil2026-05-05Rangoni Of Florence QUALIFIED53Stephen Shaw
1023Nicolas IturbideJapan2026-05-20Chanay, Jeffrey A Esq NEW21Amy Elsner
1024Emily WhobreyArgentina2026-06-03Morlong Associates PROPOSAL35Onyama Limba
1025Morrow RutaAustralia2026-05-18Rangoni Of Florence RENEWAL47Elwin Sharvill
1026Kaitlin OstroskySpain2026-05-31Feltz Printing Service PROPOSAL70Amy Elsner
1027Murillo MaletFrance2026-05-21Commercial Press RENEWAL72Asiya Javayant
1028Jefferson SchemmerItaly2026-05-16Rousseaux, Michael Esq PROPOSAL5Bernardo Dominic
1029Jefferson SchemmerSpain2026-05-25Chanay, Jeffrey A Esq QUALIFIED33Amy Elsner
1030Maria MarrierFrance2026-05-14King, Christopher A Esq RENEWAL17Ivan Magalhaes
1031Octavia MaletArgentina2026-06-01Benton, John B Jr RENEWAL89Stephen Shaw
1032Francesco ShinkoItaly2026-05-28Chapman, Ross E Esq PROPOSAL62Anna Fali
1033Kadeem FlosiIndia2026-05-18Dorl, James J Esq RENEWAL39Bernardo Dominic
1034James ButtCanada2026-05-28Chapman, Ross E Esq PROPOSAL35Ivan Magalhaes
1035Jones VocelkaItaly2026-06-03Chemel, James L Cpa UNQUALIFIED15Xuxue Feng
1036Izzy GarufiCanada2026-05-29Morlong Associates PROPOSAL2Asiya Javayant
1037Alejandro PerinAustralia2026-05-26Truhlar And Truhlar Attys QUALIFIED23Xuxue Feng
1038Morrow RutaArgentina2026-05-11Chemel, James L Cpa NEGOTIATION4Bernardo Dominic
1039Salvatore StockhamAustralia2026-06-03Feiner Bros NEGOTIATION64Ivan Magalhaes
1040Smith GlickJapan2026-05-09Truhlar And Truhlar Attys PROPOSAL72Onyama Limba
1041Greenwood BologniaBrazil2026-06-01Commercial Press RENEWAL78Xuxue Feng
1042Leon OldroydJapan2026-05-30Chapman, Ross E Esq NEGOTIATION43Asiya Javayant
1043Ricardo GauchoSpain2026-05-11Commercial Press PROPOSAL16Bernardo Dominic
1044James ButtItaly2026-05-15Morlong Associates QUALIFIED84Bernardo Dominic
1045Adams MorascaItaly2026-05-28Benton, John B Jr NEW25Xuxue Feng
1046Arvin AlbaresAustralia2026-05-09Printing Dimensions NEW72Onyama Limba
1047Octavia MaletSpain2026-05-23Rousseaux, Michael Esq PROPOSAL36Bernardo Dominic
1048Jennifer AmigonFrance2026-05-17Dorl, James J Esq UNQUALIFIED65Stephen Shaw
1049Aditya KuskoFrance2026-05-26Morlong Associates NEW25Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Antonio CaudyIndiaStephen Shaw QUALIFIED
Kaitlin OstroskyFranceElwin Sharvill RENEWAL
Smith GlickFranceElwin Sharvill QUALIFIED
Munro FerenczGermanyOnyama Limba PROPOSAL
Antonio CaudyJapanAnna Fali QUALIFIED
Misaki RoysterSpainAnna Fali NEGOTIATION
Ivar PaprockiItalyElwin Sharvill NEGOTIATION
Chavez BriddickFranceBernardo Dominic PROPOSAL
Greenwood BologniaArgentinaIoni Bowcher QUALIFIED
Jeanfrancois VenereRussiaOnyama Limba PROPOSAL
Aditya KuskoJapanIvan Magalhaes NEGOTIATION
Izzy GarufiRussiaIoni Bowcher NEW
Cody SaylorsCanadaStephen Shaw RENEWAL
Silvio SlusarskiJapanIvan Magalhaes NEW
Kadeem FlosiGermanyAsiya Javayant NEGOTIATION
Maria MarrierRussiaIvan Magalhaes UNQUALIFIED
Antonio CaudyRussiaStephen Shaw NEGOTIATION
Octavia MaletArgentinaIoni Bowcher UNQUALIFIED
Johnson SergiJapanBernardo Dominic NEW
Rodrigues CampainIndiaXuxue Feng NEW
Tony FollerIndiaOnyama Limba RENEWAL
Claire TollnerUnited KingdomBernardo Dominic RENEWAL
Smith GlickArgentinaAsiya Javayant RENEWAL
Sinclair WaycottGermanyElwin Sharvill UNQUALIFIED
Ashley DoeJapanIvan Magalhaes QUALIFIED
Antonio CaudyAustraliaAmy Elsner UNQUALIFIED
Jefferson SchemmerGermanyAmy Elsner RENEWAL
Ricardo GauchoUnited KingdomAmy Elsner RENEWAL
Salvatore StockhamItalyAnna Fali NEGOTIATION
Wickens NestleBrazilAnna Fali NEW
Ivar PaprockiAustraliaAmy Elsner RENEWAL
Sinclair WaycottAustraliaAsiya Javayant UNQUALIFIED
Izzy GarufiArgentinaStephen Shaw NEW
Munro FerenczRussiaElwin Sharvill NEW
Faith GillianItalyIoni Bowcher RENEWAL
Faith GillianArgentinaAmy Elsner RENEWAL
Aika InouyeArgentinaBernardo Dominic UNQUALIFIED
Jefferson SchemmerRussiaXuxue Feng RENEWAL
Leon OldroydSpainElwin Sharvill NEGOTIATION
Ricardo GauchoIndiaElwin Sharvill RENEWAL
Darci PoquetteSpainXuxue Feng QUALIFIED
Emily WhobreyFranceAnna Fali PROPOSAL
Leon OldroydJapanStephen Shaw NEGOTIATION
Isabel BowleyArgentinaXuxue Feng QUALIFIED
Rodrigues CampainItalyXuxue Feng PROPOSAL
Murillo MaletAustraliaAmy Elsner RENEWAL
Adams MorascaRussiaStephen Shaw QUALIFIED
Silvio SlusarskiIndiaStephen Shaw RENEWAL
David DarakjyGermanyOnyama Limba UNQUALIFIED
Faith GillianCanadaAsiya Javayant NEW
Frozen Columns
Name
Silvio Slusarski
Leja Caldarera
David Darakjy
Octavia Malet
Kadeem Flosi
Murillo Malet
Jones Vocelka
Misaki Royster
Sinclair Waycott
Izzy Garufi
Izzy Garufi
Sinclair Waycott
Rodrigues Campain
Salvatore Stockham
Maisha Rulapaugh
Rodrigues Campain
Clifford Rim
Mayumi Kolmetz
Aika Inouye
Faith Gillian
Ashley Doe
Emily Whobrey
Wickens Nestle
Ricardo Gaucho
Darci Poquette
Ivar Paprocki
Jefferson Schemmer
Nicolas Iturbide
Ashley Doe
Isabel Bowley
Kadeem Flosi
Rodrigues Campain
Munro Ferencz
Deepesh Chui
Chavez Briddick
Kadeem Flosi
James Butt
Darci Poquette
Jefferson Schemmer
Arvin Albares
Greenwood Bolognia
Wickens Nestle
Mujtaba Nicka
Murillo Malet
Aruna Figeroa
Aika Inouye
Greenwood Bolognia
Rodrigues Campain
Greenwood Bolognia
Kadeem Flosi
IdCountryDate
1000Spain2026-05-16
1001Italy2026-05-26
1002Japan2026-05-11
1003Canada2026-05-11
1004Argentina2026-05-30
1005Spain2026-05-17
1006United Kingdom2026-05-09
1007France2026-05-31
1008Germany2026-05-06
1009Spain2026-05-07
1010France2026-05-11
1011Germany2026-05-24
1012Australia2026-05-16
1013France2026-05-06
1014France2026-05-27
1015Canada2026-06-03
1016Australia2026-05-21
1017Germany2026-05-08
1018United Kingdom2026-05-05
1019Japan2026-05-22
1020Germany2026-05-18
1021Russia2026-05-12
1022Australia2026-05-09
1023Canada2026-05-23
1024Russia2026-05-28
1025United Kingdom2026-05-19
1026Russia2026-05-20
1027India2026-05-27
1028Russia2026-06-02
1029France2026-05-11
1030Italy2026-05-30
1031United Kingdom2026-05-16
1032United Kingdom2026-05-07
1033France2026-05-21
1034Japan2026-05-30
1035Brazil2026-05-15
1036Brazil2026-05-17
1037Canada2026-05-11
1038Spain2026-05-16
1039France2026-05-10
1040France2026-06-03
1041Brazil2026-05-22
1042Russia2026-05-18
1043Spain2026-05-12
1044India2026-05-29
1045Brazil2026-05-19
1046United Kingdom2026-05-06
1047Russia2026-05-29
1048Germany2026-05-30
1049India2026-05-07

On-Demand Data

NameIdCountryDate
Aditya Kusko1000Brazil2026-05-09
Morrow Ruta1001Canada2026-05-29
Costa Dilliard1002Russia2026-05-28
Wickens Nestle1003Canada2026-05-23
Sinclair Waycott1004India2026-05-24
Isabel Bowley1005Spain2026-05-24
Sinclair Waycott1006Brazil2026-05-20
Adams Morasca1007France2026-05-16
Jennifer Amigon1008India2026-05-13
Misaki Royster1009Argentina2026-06-02
Ashley Doe1010France2026-05-15
Jefferson Schemmer1011Japan2026-05-16
Costa Dilliard1012France2026-05-09
Francesco Shinko1013Germany2026-05-23
Aditya Kusko1014Canada2026-05-13
Claire Tollner1015Canada2026-06-01
Kadeem Flosi1016Brazil2026-05-31
Izzy Garufi1017United Kingdom2026-05-26
Alejandro Perin1018Argentina2026-05-22
Darci Poquette1019Argentina2026-05-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leon OldroydIndiaAsiya Javayant NEGOTIATION
Mayumi KolmetzIndiaStephen Shaw PROPOSAL
Aruna FigeroaIndiaIvan Magalhaes NEW
Antonio CaudyRussiaStephen Shaw PROPOSAL
Munro FerenczJapanOnyama Limba PROPOSAL
Leon OldroydUnited KingdomStephen Shaw NEGOTIATION
Antonio CaudyFranceStephen Shaw RENEWAL
Arvin AlbaresItalyIvan Magalhaes RENEWAL
Jennifer AmigonUnited KingdomIoni Bowcher NEW
Deepesh ChuiUnited KingdomAsiya Javayant PROPOSAL
Stacey MacleadIndiaIoni Bowcher QUALIFIED
Kadeem FlosiGermanyAnna Fali UNQUALIFIED
Mayumi KolmetzFranceElwin Sharvill UNQUALIFIED
Aika InouyeUnited KingdomElwin Sharvill NEW
Arvin AlbaresSpainElwin Sharvill UNQUALIFIED
Aika InouyeAustraliaElwin Sharvill NEW
Ashley DoeIndiaAsiya Javayant QUALIFIED
Sinclair WaycottBrazilIvan Magalhaes PROPOSAL
Chavez BriddickArgentinaIvan Magalhaes QUALIFIED
Izzy GarufiAustraliaAmy Elsner RENEWAL
Chavez BriddickRussiaIoni Bowcher RENEWAL
Darci PoquetteFranceXuxue Feng QUALIFIED
Silvio SlusarskiJapanXuxue Feng UNQUALIFIED
Deepesh ChuiSpainOnyama Limba QUALIFIED
Sinclair WaycottJapanAmy Elsner NEW
Aruna FigeroaUnited KingdomIvan Magalhaes QUALIFIED
Wickens NestleAustraliaAmy Elsner UNQUALIFIED
Isabel BowleyIndiaAmy Elsner NEGOTIATION
Leon OldroydAustraliaOnyama Limba RENEWAL
Octavia MaletArgentinaAsiya Javayant PROPOSAL
Jefferson SchemmerCanadaStephen Shaw NEW
Aruna FigeroaGermanyXuxue Feng PROPOSAL
Murillo MaletFranceIoni Bowcher RENEWAL
Kaitlin OstroskySpainXuxue Feng UNQUALIFIED
Ashley DoeRussiaAnna Fali NEW
Claire TollnerAustraliaIoni Bowcher NEGOTIATION
Nicolas IturbideUnited KingdomAmy Elsner QUALIFIED
Kadeem FlosiSpainIvan Magalhaes QUALIFIED
Isabel BowleyCanadaBernardo Dominic NEW
Leon OldroydGermanyXuxue Feng 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>