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
Mujtaba NickaRussiaAnna Fali PROPOSAL
Emily WhobreyItalyXuxue Feng UNQUALIFIED
Wickens NestleRussiaOnyama Limba PROPOSAL
Johnson SergiCanadaAmy Elsner UNQUALIFIED
Johnson SergiUnited KingdomAmy Elsner NEGOTIATION
David DarakjyArgentinaAmy Elsner QUALIFIED
Murillo MaletArgentinaBernardo Dominic NEW
Mujtaba NickaFranceOnyama Limba QUALIFIED
Jefferson SchemmerCanadaXuxue Feng PROPOSAL
Johnson SergiCanadaBernardo Dominic PROPOSAL
Claire TollnerRussiaXuxue Feng UNQUALIFIED
Ivar PaprockiUnited KingdomIoni Bowcher NEW
Emily WhobreyRussiaBernardo Dominic PROPOSAL
Emily WhobreyArgentinaAsiya Javayant RENEWAL
Faith GillianJapanXuxue Feng QUALIFIED
Chavez BriddickCanadaIoni Bowcher PROPOSAL
Arvin AlbaresBrazilElwin Sharvill NEGOTIATION
Costa DilliardArgentinaBernardo Dominic QUALIFIED
Wickens NestleSpainBernardo Dominic UNQUALIFIED
Rodrigues CampainRussiaBernardo Dominic NEW
Kaitlin OstroskyUnited KingdomElwin Sharvill NEW
Cody SaylorsArgentinaOnyama Limba NEW
Rodrigues CampainFranceAmy Elsner RENEWAL
Alejandro PerinJapanStephen Shaw PROPOSAL
Morrow RutaGermanyAmy Elsner NEW
Izzy GarufiUnited KingdomAmy Elsner RENEWAL
Chavez BriddickJapanBernardo Dominic PROPOSAL
Sinclair WaycottCanadaOnyama Limba RENEWAL
Maria MarrierCanadaElwin Sharvill UNQUALIFIED
Sinclair WaycottIndiaOnyama Limba NEGOTIATION
Jennifer AmigonGermanyAnna Fali UNQUALIFIED
Faith GillianAustraliaOnyama Limba UNQUALIFIED
Emily WhobreyJapanIvan Magalhaes NEW
Ivar PaprockiCanadaIoni Bowcher RENEWAL
Francesco ShinkoJapanAmy Elsner RENEWAL
Jeanfrancois VenereGermanyAmy Elsner NEW
Sinclair WaycottIndiaIoni Bowcher RENEWAL
Mujtaba NickaFranceStephen Shaw PROPOSAL
Johnson SergiUnited KingdomIoni Bowcher NEW
Antonio CaudyUnited KingdomIoni Bowcher NEW
Morrow RutaFranceAmy Elsner UNQUALIFIED
Smith GlickGermanyBernardo Dominic UNQUALIFIED
Ivar PaprockiArgentinaXuxue Feng UNQUALIFIED
Cody SaylorsGermanyIvan Magalhaes UNQUALIFIED
Julie StensethIndiaStephen Shaw NEGOTIATION
Julie StensethItalyBernardo Dominic UNQUALIFIED
Francesco ShinkoAustraliaAnna Fali UNQUALIFIED
Murillo MaletCanadaStephen Shaw RENEWAL
Nicolas IturbideUnited KingdomAmy Elsner NEW
Ricardo GauchoSpainElwin Sharvill UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Ricardo GauchoBrazilXuxue Feng NEGOTIATION
Darci PoquetteIndiaElwin Sharvill NEGOTIATION
Mujtaba NickaAustraliaIoni Bowcher QUALIFIED
Claire TollnerItalyXuxue Feng UNQUALIFIED
Julie StensethAustraliaXuxue Feng NEW
Nicolas IturbideJapanAmy Elsner PROPOSAL
Isabel BowleyUnited KingdomElwin Sharvill NEGOTIATION
Stacey MacleadArgentinaAsiya Javayant RENEWAL
Mujtaba NickaSpainBernardo Dominic RENEWAL
Jefferson SchemmerUnited KingdomOnyama Limba UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Morrow RutaCanada2026-04-09Chemel, James L Cpa PROPOSAL53Ivan Magalhaes
1001Aika InouyeBrazil2026-04-15Rousseaux, Michael Esq RENEWAL57Ivan Magalhaes
1002Chavez BriddickIndia2026-04-19Buckley Miller Wright UNQUALIFIED64Asiya Javayant
1003Silvio SlusarskiJapan2026-03-27Printing Dimensions NEW44Ivan Magalhaes
1004Cody SaylorsAustralia2026-04-14Chemel, James L Cpa RENEWAL82Onyama Limba
1005Silvio SlusarskiGermany2026-04-16Commercial Press PROPOSAL60Elwin Sharvill
1006Maria MarrierItaly2026-04-19Truhlar And Truhlar Attys RENEWAL70Onyama Limba
1007Darci PoquetteFrance2026-04-10Commercial Press QUALIFIED0Ivan Magalhaes
1008Octavia MaletJapan2026-04-02Morlong Associates NEGOTIATION55Amy Elsner
1009Salvatore StockhamAustralia2026-03-31Chanay, Jeffrey A Esq NEW19Onyama Limba
1010Greenwood BologniaGermany2026-03-25Rousseaux, Michael Esq UNQUALIFIED69Amy Elsner
1011Munro FerenczSpain2026-04-05Rousseaux, Michael Esq PROPOSAL77Xuxue Feng
1012Sinclair WaycottCanada2026-03-24Chapman, Ross E Esq RENEWAL47Amy Elsner
1013Cody SaylorsIndia2026-04-05Rousseaux, Michael Esq RENEWAL77Asiya Javayant
1014Ricardo GauchoUnited Kingdom2026-04-07Benton, John B Jr UNQUALIFIED47Asiya Javayant
1015Sinclair WaycottItaly2026-03-26Morlong Associates NEGOTIATION28Anna Fali
1016Adams MorascaAustralia2026-03-29Chemel, James L Cpa PROPOSAL35Onyama Limba
1017Mujtaba NickaItaly2026-03-21Buckley Miller Wright NEW27Ioni Bowcher
1018Darci PoquetteAustralia2026-03-21Morlong Associates UNQUALIFIED60Asiya Javayant
1019Munro FerenczUnited Kingdom2026-03-30Dorl, James J Esq RENEWAL36Ioni Bowcher
1020Murillo MaletSpain2026-04-01Truhlar And Truhlar Attys QUALIFIED27Bernardo Dominic
1021Isabel BowleyFrance2026-04-13King, Christopher A Esq PROPOSAL41Elwin Sharvill
1022Octavia MaletJapan2026-04-18Chanay, Jeffrey A Esq UNQUALIFIED99Stephen Shaw
1023Leon OldroydCanada2026-03-28Truhlar And Truhlar Attys UNQUALIFIED86Elwin Sharvill
1024Francesco ShinkoCanada2026-03-28Rousseaux, Michael Esq UNQUALIFIED13Asiya Javayant
1025Kaitlin OstroskySpain2026-03-27Feltz Printing Service UNQUALIFIED30Amy Elsner
1026Silvio SlusarskiCanada2026-04-09Rousseaux, Michael Esq PROPOSAL20Asiya Javayant
1027Munro FerenczGermany2026-03-26Feltz Printing Service NEW47Onyama Limba
1028Alejandro PerinGermany2026-04-16Printing Dimensions PROPOSAL79Onyama Limba
1029Aditya KuskoBrazil2026-03-26Morlong Associates NEW13Elwin Sharvill
1030Salvatore StockhamJapan2026-04-19Morlong Associates QUALIFIED46Bernardo Dominic
1031Aika InouyeBrazil2026-04-14Buckley Miller Wright QUALIFIED77Xuxue Feng
1032Mujtaba NickaRussia2026-03-22Feiner Bros NEGOTIATION0Ioni Bowcher
1033Cody SaylorsFrance2026-04-10Printing Dimensions UNQUALIFIED68Amy Elsner
1034Munro FerenczBrazil2026-04-07Benton, John B Jr NEGOTIATION86Bernardo Dominic
1035Silvio SlusarskiIndia2026-04-06Feiner Bros QUALIFIED53Anna Fali
1036Murillo MaletItaly2026-03-22Benton, John B Jr QUALIFIED89Elwin Sharvill
1037Leja CaldareraGermany2026-04-19Printing Dimensions QUALIFIED61Anna Fali
1038Cody SaylorsGermany2026-03-30Benton, John B Jr UNQUALIFIED0Bernardo Dominic
1039Deepesh ChuiSpain2026-04-08Buckley Miller Wright QUALIFIED80Anna Fali
1040Francesco ShinkoJapan2026-03-22Rousseaux, Michael Esq RENEWAL81Onyama Limba
1041Faith GillianItaly2026-04-09Chemel, James L Cpa UNQUALIFIED41Anna Fali
1042Aditya KuskoSpain2026-03-27Commercial Press QUALIFIED25Amy Elsner
1043Jennifer AmigonRussia2026-04-06Morlong Associates UNQUALIFIED94Stephen Shaw
1044Ricardo GauchoAustralia2026-04-16Rangoni Of Florence NEW23Ioni Bowcher
1045Munro FerenczJapan2026-04-11Buckley Miller Wright NEGOTIATION75Onyama Limba
1046Leon OldroydAustralia2026-04-11Truhlar And Truhlar Attys QUALIFIED73Anna Fali
1047Ivar PaprockiGermany2026-04-06King, Christopher A Esq RENEWAL16Ivan Magalhaes
1048Sinclair WaycottGermany2026-04-05Benton, John B Jr PROPOSAL71Asiya Javayant
1049Ashley DoeCanada2026-03-29Rangoni Of Florence UNQUALIFIED70Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Morrow RutaFranceXuxue Feng NEGOTIATION
Claire TollnerFranceIoni Bowcher NEGOTIATION
Clifford RimArgentinaIvan Magalhaes PROPOSAL
Wickens NestleItalyAnna Fali QUALIFIED
Faith GillianArgentinaStephen Shaw UNQUALIFIED
Aika InouyeBrazilBernardo Dominic PROPOSAL
Francesco ShinkoJapanElwin Sharvill NEW
Ricardo GauchoItalyIoni Bowcher UNQUALIFIED
Claire TollnerCanadaIvan Magalhaes QUALIFIED
Morrow RutaItalyElwin Sharvill PROPOSAL
Jefferson SchemmerBrazilOnyama Limba RENEWAL
Antonio CaudyIndiaXuxue Feng UNQUALIFIED
Maisha RulapaughItalyAnna Fali UNQUALIFIED
Isabel BowleyGermanyOnyama Limba QUALIFIED
Claire TollnerSpainBernardo Dominic PROPOSAL
Ivar PaprockiItalyAsiya Javayant NEGOTIATION
Murillo MaletGermanyAsiya Javayant RENEWAL
Alejandro PerinIndiaIoni Bowcher UNQUALIFIED
Adams MorascaItalyStephen Shaw UNQUALIFIED
Maria MarrierFranceAsiya Javayant PROPOSAL
Maria MarrierFranceAsiya Javayant PROPOSAL
Silvio SlusarskiSpainBernardo Dominic NEW
Misaki RoysterArgentinaAnna Fali UNQUALIFIED
Rodrigues CampainRussiaStephen Shaw RENEWAL
Antonio CaudySpainXuxue Feng NEGOTIATION
Maria MarrierAustraliaAsiya Javayant NEGOTIATION
Mayumi KolmetzSpainStephen Shaw NEW
Jefferson SchemmerFranceIvan Magalhaes NEGOTIATION
Jones VocelkaRussiaIoni Bowcher UNQUALIFIED
Clifford RimAustraliaAmy Elsner NEGOTIATION
Leja CaldareraBrazilAmy Elsner UNQUALIFIED
Adams MorascaBrazilXuxue Feng PROPOSAL
Aditya KuskoItalyElwin Sharvill QUALIFIED
Jefferson SchemmerRussiaBernardo Dominic PROPOSAL
Cody SaylorsFranceBernardo Dominic UNQUALIFIED
Kadeem FlosiBrazilAnna Fali NEW
Octavia MaletGermanyBernardo Dominic RENEWAL
Smith GlickFranceStephen Shaw NEW
Johnson SergiCanadaElwin Sharvill NEGOTIATION
Antonio CaudyRussiaStephen Shaw UNQUALIFIED
Faith GillianRussiaXuxue Feng QUALIFIED
Silvio SlusarskiGermanyBernardo Dominic NEGOTIATION
Misaki RoysterAustraliaElwin Sharvill QUALIFIED
Julie StensethBrazilIoni Bowcher UNQUALIFIED
Arvin AlbaresGermanyAsiya Javayant PROPOSAL
Mujtaba NickaItalyBernardo Dominic NEGOTIATION
Smith GlickBrazilElwin Sharvill RENEWAL
Isabel BowleyJapanAmy Elsner NEGOTIATION
Johnson SergiAustraliaAnna Fali QUALIFIED
Tony FollerArgentinaAnna Fali QUALIFIED
Frozen Columns
Name
Jefferson Schemmer
Nicolas Iturbide
Misaki Royster
Rodrigues Campain
Isabel Bowley
Darci Poquette
Isabel Bowley
Darci Poquette
Ricardo Gaucho
Leon Oldroyd
Deepesh Chui
Jeanfrancois Venere
Juan Wieser
Chavez Briddick
Deepesh Chui
Kadeem Flosi
Aruna Figeroa
Ashley Doe
Smith Glick
Silvio Slusarski
Alejandro Perin
Darci Poquette
Izzy Garufi
Ashley Doe
Munro Ferencz
Greenwood Bolognia
Chavez Briddick
Alejandro Perin
Clifford Rim
Ashley Doe
Greenwood Bolognia
Wickens Nestle
Jeanfrancois Venere
Tony Foller
Aruna Figeroa
Francesco Shinko
Greenwood Bolognia
Faith Gillian
Stacey Maclead
Salvatore Stockham
Chavez Briddick
Kadeem Flosi
Stacey Maclead
Jones Vocelka
Ashley Doe
Faith Gillian
Ashley Doe
Adams Morasca
Kaitlin Ostrosky
Maria Marrier
IdCountryDate
1000Canada2026-04-15
1001India2026-04-16
1002Argentina2026-04-16
1003Germany2026-04-05
1004Canada2026-04-01
1005Australia2026-03-28
1006Canada2026-04-12
1007Australia2026-04-13
1008Russia2026-04-09
1009Canada2026-04-07
1010Brazil2026-04-16
1011Canada2026-04-08
1012Brazil2026-04-16
1013Argentina2026-04-03
1014Canada2026-03-28
1015France2026-04-13
1016Italy2026-04-06
1017Brazil2026-04-16
1018Argentina2026-04-03
1019Argentina2026-03-28
1020Brazil2026-04-02
1021Spain2026-04-18
1022France2026-03-28
1023Japan2026-04-16
1024Argentina2026-03-26
1025Italy2026-04-14
1026Italy2026-04-06
1027Australia2026-04-08
1028Japan2026-03-29
1029Spain2026-03-23
1030Canada2026-03-29
1031Argentina2026-04-13
1032India2026-04-07
1033Germany2026-04-07
1034India2026-03-22
1035France2026-03-25
1036Germany2026-04-10
1037Russia2026-04-02
1038Brazil2026-04-11
1039Argentina2026-04-16
1040Russia2026-03-25
1041Japan2026-04-15
1042India2026-04-10
1043Brazil2026-04-14
1044France2026-04-03
1045Germany2026-04-16
1046Japan2026-04-13
1047Germany2026-04-17
1048Brazil2026-03-22
1049United Kingdom2026-03-28

On-Demand Data

NameIdCountryDate
Faith Gillian1000Germany2026-04-07
Emily Whobrey1001United Kingdom2026-04-10
Kaitlin Ostrosky1002Germany2026-04-09
Emily Whobrey1003Italy2026-03-21
Antonio Caudy1004Germany2026-03-30
Rodrigues Campain1005Argentina2026-04-15
Antonio Caudy1006Germany2026-03-28
Sinclair Waycott1007Spain2026-04-17
Smith Glick1008Australia2026-03-26
Silvio Slusarski1009United Kingdom2026-04-17
Rodrigues Campain1010Japan2026-03-24
Sinclair Waycott1011Spain2026-04-10
Munro Ferencz1012Russia2026-04-03
Murillo Malet1013Canada2026-03-25
Murillo Malet1014Italy2026-03-24
Arvin Albares1015India2026-04-13
James Butt1016Japan2026-04-17
Misaki Royster1017France2026-04-03
Morrow Ruta1018Australia2026-04-06
Jefferson Schemmer1019Brazil2026-04-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Tony FollerItalyOnyama Limba PROPOSAL
Faith GillianItalyStephen Shaw NEGOTIATION
Adams MorascaGermanyStephen Shaw QUALIFIED
Jones VocelkaItalyElwin Sharvill NEGOTIATION
Francesco ShinkoJapanElwin Sharvill NEW
Ashley DoeArgentinaXuxue Feng RENEWAL
Mayumi KolmetzAustraliaAnna Fali QUALIFIED
Misaki RoysterAustraliaOnyama Limba NEGOTIATION
Adams MorascaJapanElwin Sharvill UNQUALIFIED
Clifford RimArgentinaStephen Shaw NEGOTIATION
Tony FollerSpainXuxue Feng QUALIFIED
Smith GlickAustraliaIoni Bowcher QUALIFIED
Izzy GarufiIndiaStephen Shaw UNQUALIFIED
Maisha RulapaughCanadaIvan Magalhaes RENEWAL
Faith GillianArgentinaBernardo Dominic QUALIFIED
Murillo MaletIndiaOnyama Limba QUALIFIED
Tony FollerCanadaAsiya Javayant NEGOTIATION
Clifford RimRussiaAnna Fali UNQUALIFIED
Silvio SlusarskiUnited KingdomStephen Shaw PROPOSAL
Rodrigues CampainIndiaAnna Fali NEGOTIATION
Costa DilliardBrazilAsiya Javayant RENEWAL
Claire TollnerArgentinaIoni Bowcher NEGOTIATION
Emily WhobreyJapanIoni Bowcher RENEWAL
Costa DilliardArgentinaAsiya Javayant PROPOSAL
Costa DilliardSpainBernardo Dominic NEW
James ButtUnited KingdomElwin Sharvill NEW
Salvatore StockhamGermanyBernardo Dominic UNQUALIFIED
Ricardo GauchoItalyElwin Sharvill NEW
Jennifer AmigonBrazilBernardo Dominic QUALIFIED
Leja CaldareraIndiaStephen Shaw NEGOTIATION
Ashley DoeUnited KingdomOnyama Limba NEW
Julie StensethSpainAsiya Javayant NEGOTIATION
Alejandro PerinArgentinaElwin Sharvill NEGOTIATION
Silvio SlusarskiBrazilElwin Sharvill QUALIFIED
Murillo MaletRussiaIoni Bowcher PROPOSAL
Jeanfrancois VenereRussiaXuxue Feng QUALIFIED
Clifford RimItalyAsiya Javayant NEGOTIATION
Sinclair WaycottFranceAnna Fali NEGOTIATION
Greenwood BologniaGermanyAsiya Javayant UNQUALIFIED
Octavia MaletJapanIvan Magalhaes 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>