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
Tony FollerArgentinaAsiya Javayant RENEWAL
Smith GlickCanadaBernardo Dominic PROPOSAL
Adams MorascaFranceBernardo Dominic PROPOSAL
Kadeem FlosiItalyIvan Magalhaes UNQUALIFIED
Chavez BriddickFranceAnna Fali UNQUALIFIED
Maisha RulapaughCanadaAnna Fali QUALIFIED
Faith GillianFranceAnna Fali UNQUALIFIED
Isabel BowleyBrazilIoni Bowcher NEW
Aika InouyeArgentinaOnyama Limba PROPOSAL
Kaitlin OstroskySpainBernardo Dominic NEGOTIATION
Costa DilliardItalyAmy Elsner NEW
Juan WieserArgentinaIvan Magalhaes RENEWAL
Claire TollnerAustraliaAmy Elsner NEGOTIATION
James ButtArgentinaOnyama Limba UNQUALIFIED
Maisha RulapaughRussiaAnna Fali QUALIFIED
Octavia MaletGermanyAnna Fali NEW
Deepesh ChuiUnited KingdomIoni Bowcher NEGOTIATION
Aditya KuskoRussiaAsiya Javayant UNQUALIFIED
Cody SaylorsUnited KingdomBernardo Dominic NEW
Emily WhobreyGermanyIvan Magalhaes NEW
Wickens NestleUnited KingdomAsiya Javayant RENEWAL
Sinclair WaycottCanadaAmy Elsner PROPOSAL
Sinclair WaycottRussiaBernardo Dominic NEGOTIATION
Johnson SergiGermanyAnna Fali NEGOTIATION
Ricardo GauchoItalyXuxue Feng UNQUALIFIED
Izzy GarufiItalyIvan Magalhaes RENEWAL
Francesco ShinkoAustraliaElwin Sharvill PROPOSAL
Mujtaba NickaUnited KingdomAnna Fali RENEWAL
Morrow RutaItalyElwin Sharvill RENEWAL
Arvin AlbaresSpainAnna Fali RENEWAL
Alejandro PerinBrazilElwin Sharvill RENEWAL
Mayumi KolmetzFranceIvan Magalhaes QUALIFIED
Aruna FigeroaAustraliaElwin Sharvill QUALIFIED
Jefferson SchemmerIndiaIoni Bowcher PROPOSAL
Aruna FigeroaRussiaElwin Sharvill NEW
Adams MorascaGermanyIoni Bowcher NEGOTIATION
Kaitlin OstroskyGermanyOnyama Limba NEGOTIATION
Morrow RutaItalyAsiya Javayant PROPOSAL
Jennifer AmigonArgentinaStephen Shaw NEW
Emily WhobreyAustraliaAmy Elsner RENEWAL
Maisha RulapaughRussiaStephen Shaw RENEWAL
Jefferson SchemmerAustraliaBernardo Dominic RENEWAL
Cody SaylorsSpainIvan Magalhaes NEGOTIATION
Adams MorascaSpainStephen Shaw QUALIFIED
Costa DilliardCanadaAsiya Javayant PROPOSAL
Julie StensethAustraliaBernardo Dominic NEGOTIATION
Mujtaba NickaFranceAsiya Javayant NEGOTIATION
Cody SaylorsItalyXuxue Feng NEGOTIATION
Tony FollerAustraliaIoni Bowcher NEGOTIATION
Mujtaba NickaIndiaElwin Sharvill UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Salvatore StockhamJapanIvan Magalhaes UNQUALIFIED
Adams MorascaAustraliaBernardo Dominic RENEWAL
Faith GillianItalyAsiya Javayant NEW
Juan WieserGermanyElwin Sharvill RENEWAL
Costa DilliardCanadaAsiya Javayant QUALIFIED
Arvin AlbaresSpainBernardo Dominic QUALIFIED
Leja CaldareraUnited KingdomAmy Elsner NEW
Chavez BriddickUnited KingdomElwin Sharvill NEW
Ashley DoeRussiaAsiya Javayant NEGOTIATION
Isabel BowleyIndiaIvan Magalhaes UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ricardo GauchoArgentina2026-05-01Rangoni Of Florence UNQUALIFIED70Amy Elsner
1001Costa DilliardFrance2026-05-18Commercial Press UNQUALIFIED3Elwin Sharvill
1002Jefferson SchemmerItaly2026-05-22Chapman, Ross E Esq RENEWAL61Elwin Sharvill
1003Ashley DoeItaly2026-05-27Chemel, James L Cpa QUALIFIED8Asiya Javayant
1004Deepesh ChuiUnited Kingdom2026-05-23Feltz Printing Service UNQUALIFIED30Amy Elsner
1005Darci PoquetteArgentina2026-05-23Chapman, Ross E Esq NEW99Ioni Bowcher
1006Johnson SergiArgentina2026-05-16Feltz Printing Service RENEWAL63Bernardo Dominic
1007Leja CaldareraJapan2026-05-09Feltz Printing Service NEGOTIATION4Onyama Limba
1008Claire TollnerBrazil2026-05-17Chemel, James L Cpa QUALIFIED48Xuxue Feng
1009Leon OldroydItaly2026-05-21Chanay, Jeffrey A Esq QUALIFIED45Bernardo Dominic
1010Octavia MaletFrance2026-05-26Chapman, Ross E Esq UNQUALIFIED2Bernardo Dominic
1011Ricardo GauchoSpain2026-05-17Morlong Associates PROPOSAL19Onyama Limba
1012Arvin AlbaresArgentina2026-05-13Dorl, James J Esq NEGOTIATION25Asiya Javayant
1013Greenwood BologniaSpain2026-05-27Rangoni Of Florence NEGOTIATION59Onyama Limba
1014Mujtaba NickaIndia2026-05-10King, Christopher A Esq QUALIFIED81Anna Fali
1015Kaitlin OstroskyGermany2026-05-09Chapman, Ross E Esq RENEWAL26Xuxue Feng
1016Mujtaba NickaSpain2026-05-19Truhlar And Truhlar Attys QUALIFIED84Bernardo Dominic
1017Jefferson SchemmerGermany2026-05-22Commercial Press RENEWAL36Elwin Sharvill
1018Ashley DoeGermany2026-05-23Dorl, James J Esq QUALIFIED64Onyama Limba
1019Silvio SlusarskiJapan2026-04-29Truhlar And Truhlar Attys NEW55Ioni Bowcher
1020Ricardo GauchoSpain2026-05-04Commercial Press NEGOTIATION70Onyama Limba
1021David DarakjyFrance2026-05-15Buckley Miller Wright PROPOSAL44Stephen Shaw
1022Leon OldroydIndia2026-05-10Commercial Press PROPOSAL63Stephen Shaw
1023Izzy GarufiSpain2026-05-20Commercial Press PROPOSAL4Bernardo Dominic
1024Leon OldroydItaly2026-04-29Chemel, James L Cpa NEGOTIATION9Anna Fali
1025Leon OldroydFrance2026-05-18Chapman, Ross E Esq QUALIFIED40Stephen Shaw
1026Mujtaba NickaUnited Kingdom2026-05-24Truhlar And Truhlar Attys PROPOSAL73Amy Elsner
1027Rodrigues CampainIndia2026-04-28Rousseaux, Michael Esq PROPOSAL47Anna Fali
1028Isabel BowleyGermany2026-05-20Dorl, James J Esq QUALIFIED69Onyama Limba
1029Ivar PaprockiAustralia2026-05-15Chemel, James L Cpa PROPOSAL8Ivan Magalhaes
1030Misaki RoysterAustralia2026-04-29Chanay, Jeffrey A Esq RENEWAL73Onyama Limba
1031Johnson SergiGermany2026-05-02King, Christopher A Esq QUALIFIED74Ivan Magalhaes
1032Claire TollnerAustralia2026-05-18Rousseaux, Michael Esq NEGOTIATION92Anna Fali
1033Leon OldroydArgentina2026-05-16Chemel, James L Cpa QUALIFIED43Bernardo Dominic
1034Alejandro PerinArgentina2026-04-29Chanay, Jeffrey A Esq NEGOTIATION79Xuxue Feng
1035Mayumi KolmetzCanada2026-05-25Dorl, James J Esq UNQUALIFIED74Xuxue Feng
1036Arvin AlbaresIndia2026-05-24Chanay, Jeffrey A Esq NEW95Asiya Javayant
1037Aruna FigeroaSpain2026-05-07Dorl, James J Esq NEW1Onyama Limba
1038Cody SaylorsAustralia2026-04-30Morlong Associates NEGOTIATION3Ivan Magalhaes
1039Mayumi KolmetzFrance2026-05-15Chanay, Jeffrey A Esq RENEWAL87Bernardo Dominic
1040Smith GlickUnited Kingdom2026-05-07Chapman, Ross E Esq QUALIFIED35Asiya Javayant
1041Smith GlickBrazil2026-05-07Rousseaux, Michael Esq PROPOSAL61Amy Elsner
1042Sinclair WaycottGermany2026-04-29Truhlar And Truhlar Attys PROPOSAL56Bernardo Dominic
1043Smith GlickRussia2026-05-23Feiner Bros RENEWAL34Amy Elsner
1044Isabel BowleyArgentina2026-05-06Chanay, Jeffrey A Esq NEW24Amy Elsner
1045Murillo MaletAustralia2026-04-30Chapman, Ross E Esq QUALIFIED21Ivan Magalhaes
1046Tony FollerArgentina2026-05-11Chanay, Jeffrey A Esq NEGOTIATION86Xuxue Feng
1047Jennifer AmigonCanada2026-05-04Chanay, Jeffrey A Esq QUALIFIED38Bernardo Dominic
1048Juan WieserGermany2026-05-01Rangoni Of Florence NEW3Amy Elsner
1049Alejandro PerinAustralia2026-05-12Chemel, James L Cpa RENEWAL10Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Jefferson SchemmerRussiaIoni Bowcher UNQUALIFIED
Chavez BriddickArgentinaAsiya Javayant NEGOTIATION
Mujtaba NickaGermanyAsiya Javayant PROPOSAL
Kaitlin OstroskyJapanStephen Shaw RENEWAL
Misaki RoysterRussiaBernardo Dominic PROPOSAL
Ivar PaprockiRussiaAmy Elsner QUALIFIED
Faith GillianArgentinaOnyama Limba QUALIFIED
Cody SaylorsSpainElwin Sharvill NEW
Cody SaylorsIndiaBernardo Dominic NEW
Jefferson SchemmerFranceIoni Bowcher NEGOTIATION
Salvatore StockhamCanadaAnna Fali NEW
Ivar PaprockiItalyOnyama Limba NEW
Ivar PaprockiIndiaOnyama Limba UNQUALIFIED
Ivar PaprockiJapanAmy Elsner RENEWAL
Deepesh ChuiArgentinaElwin Sharvill QUALIFIED
Faith GillianItalyAmy Elsner UNQUALIFIED
Clifford RimArgentinaAmy Elsner RENEWAL
Kaitlin OstroskyGermanyXuxue Feng PROPOSAL
Wickens NestleItalyIoni Bowcher QUALIFIED
Cody SaylorsRussiaAsiya Javayant RENEWAL
Clifford RimJapanIvan Magalhaes RENEWAL
Kaitlin OstroskyItalyIvan Magalhaes PROPOSAL
Morrow RutaArgentinaIvan Magalhaes QUALIFIED
Kaitlin OstroskyAustraliaAnna Fali QUALIFIED
Kaitlin OstroskyItalyAmy Elsner QUALIFIED
Adams MorascaBrazilIvan Magalhaes QUALIFIED
Stacey MacleadUnited KingdomXuxue Feng PROPOSAL
Nicolas IturbideBrazilOnyama Limba NEGOTIATION
Antonio CaudyUnited KingdomStephen Shaw NEW
Tony FollerBrazilAsiya Javayant UNQUALIFIED
Emily WhobreyAustraliaOnyama Limba PROPOSAL
Maria MarrierIndiaIvan Magalhaes NEW
Faith GillianCanadaStephen Shaw QUALIFIED
Maria MarrierArgentinaIvan Magalhaes NEW
Alejandro PerinCanadaIoni Bowcher QUALIFIED
Cody SaylorsJapanStephen Shaw RENEWAL
Arvin AlbaresGermanyAnna Fali NEW
Clifford RimBrazilElwin Sharvill QUALIFIED
Clifford RimSpainStephen Shaw QUALIFIED
Claire TollnerAustraliaAsiya Javayant RENEWAL
Darci PoquetteFranceIvan Magalhaes QUALIFIED
Aika InouyeUnited KingdomIoni Bowcher NEGOTIATION
David DarakjyGermanyXuxue Feng NEGOTIATION
Smith GlickJapanElwin Sharvill QUALIFIED
Leja CaldareraCanadaAsiya Javayant RENEWAL
Tony FollerJapanStephen Shaw QUALIFIED
Faith GillianCanadaAmy Elsner NEGOTIATION
Cody SaylorsJapanBernardo Dominic PROPOSAL
Ashley DoeCanadaIvan Magalhaes PROPOSAL
Juan WieserArgentinaIoni Bowcher PROPOSAL
Frozen Columns
Name
Smith Glick
Jeanfrancois Venere
Octavia Malet
Leon Oldroyd
Rodrigues Campain
Sinclair Waycott
Deepesh Chui
Juan Wieser
Adams Morasca
Rodrigues Campain
Emily Whobrey
Rodrigues Campain
Aruna Figeroa
James Butt
Emily Whobrey
Salvatore Stockham
Greenwood Bolognia
Mujtaba Nicka
Misaki Royster
Stacey Maclead
Antonio Caudy
Jeanfrancois Venere
Kaitlin Ostrosky
Sinclair Waycott
Leon Oldroyd
Sinclair Waycott
Chavez Briddick
Nicolas Iturbide
Jefferson Schemmer
Salvatore Stockham
Rodrigues Campain
Ricardo Gaucho
Greenwood Bolognia
Munro Ferencz
Ashley Doe
Ivar Paprocki
Costa Dilliard
Jefferson Schemmer
Ashley Doe
Rodrigues Campain
Johnson Sergi
Salvatore Stockham
Arvin Albares
Isabel Bowley
Arvin Albares
Emily Whobrey
Mujtaba Nicka
David Darakjy
Jefferson Schemmer
Jones Vocelka
IdCountryDate
1000Spain2026-05-06
1001Argentina2026-04-29
1002Japan2026-05-27
1003Russia2026-05-25
1004Spain2026-05-09
1005India2026-05-23
1006Spain2026-05-05
1007Russia2026-05-03
1008Russia2026-05-27
1009Australia2026-05-06
1010Argentina2026-05-10
1011Canada2026-05-22
1012Spain2026-05-25
1013Italy2026-05-11
1014India2026-05-12
1015France2026-05-08
1016Japan2026-05-06
1017Russia2026-05-11
1018United Kingdom2026-05-07
1019Spain2026-05-03
1020India2026-05-11
1021Spain2026-05-19
1022India2026-05-10
1023Russia2026-05-26
1024Japan2026-05-08
1025Japan2026-05-09
1026Germany2026-05-02
1027Spain2026-05-01
1028United Kingdom2026-05-20
1029Australia2026-05-21
1030Spain2026-05-07
1031Brazil2026-05-05
1032Russia2026-05-20
1033Australia2026-05-03
1034Canada2026-05-15
1035United Kingdom2026-05-24
1036Russia2026-05-17
1037Argentina2026-05-26
1038Canada2026-05-20
1039Australia2026-05-03
1040Japan2026-04-28
1041Spain2026-05-12
1042Argentina2026-05-16
1043Spain2026-05-21
1044Canada2026-05-04
1045Australia2026-04-29
1046Russia2026-05-07
1047United Kingdom2026-05-24
1048Australia2026-05-01
1049Spain2026-05-08

On-Demand Data

NameIdCountryDate
Jefferson Schemmer1000India2026-05-13
Tony Foller1001Canada2026-05-26
Juan Wieser1002Canada2026-05-03
Adams Morasca1003France2026-05-25
Kaitlin Ostrosky1004Italy2026-05-24
Rodrigues Campain1005Brazil2026-05-17
Nicolas Iturbide1006France2026-05-16
Izzy Garufi1007United Kingdom2026-05-05
Costa Dilliard1008Spain2026-05-01
Faith Gillian1009Germany2026-04-30
Mayumi Kolmetz1010Brazil2026-05-07
Adams Morasca1011India2026-05-16
Johnson Sergi1012Italy2026-05-13
Jones Vocelka1013Canada2026-05-13
Leon Oldroyd1014Brazil2026-05-06
Octavia Malet1015France2026-05-08
Claire Tollner1016Spain2026-05-16
Antonio Caudy1017Brazil2026-05-15
Costa Dilliard1018France2026-05-10
Aruna Figeroa1019Italy2026-05-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Alejandro PerinFranceStephen Shaw RENEWAL
Morrow RutaCanadaXuxue Feng UNQUALIFIED
Julie StensethGermanyIvan Magalhaes UNQUALIFIED
Murillo MaletBrazilXuxue Feng PROPOSAL
Mujtaba NickaSpainStephen Shaw NEW
Antonio CaudySpainAsiya Javayant NEGOTIATION
Octavia MaletSpainIoni Bowcher NEW
Sinclair WaycottRussiaAnna Fali NEW
Claire TollnerFranceAsiya Javayant NEW
Mujtaba NickaRussiaElwin Sharvill QUALIFIED
Salvatore StockhamArgentinaBernardo Dominic UNQUALIFIED
Aditya KuskoJapanOnyama Limba RENEWAL
Tony FollerJapanBernardo Dominic PROPOSAL
Tony FollerBrazilAsiya Javayant NEGOTIATION
Antonio CaudyJapanIoni Bowcher NEGOTIATION
Faith GillianUnited KingdomStephen Shaw UNQUALIFIED
Juan WieserArgentinaIoni Bowcher RENEWAL
David DarakjySpainIoni Bowcher UNQUALIFIED
Isabel BowleyRussiaOnyama Limba NEW
Mayumi KolmetzArgentinaAsiya Javayant PROPOSAL
Jeanfrancois VenereBrazilAsiya Javayant PROPOSAL
Aika InouyeBrazilAsiya Javayant NEGOTIATION
Faith GillianItalyIoni Bowcher PROPOSAL
Stacey MacleadArgentinaOnyama Limba QUALIFIED
Murillo MaletUnited KingdomAsiya Javayant PROPOSAL
Wickens NestleJapanIvan Magalhaes NEGOTIATION
Aika InouyeFranceOnyama Limba PROPOSAL
Maria MarrierItalyStephen Shaw RENEWAL
Maisha RulapaughSpainIoni Bowcher PROPOSAL
Octavia MaletAustraliaAnna Fali PROPOSAL
Costa DilliardGermanyAsiya Javayant QUALIFIED
Morrow RutaArgentinaAmy Elsner UNQUALIFIED
Ivar PaprockiBrazilAsiya Javayant NEW
Nicolas IturbideUnited KingdomAsiya Javayant NEGOTIATION
Aika InouyeUnited KingdomIvan Magalhaes UNQUALIFIED
Antonio CaudyJapanXuxue Feng NEW
Silvio SlusarskiUnited KingdomXuxue Feng RENEWAL
Mayumi KolmetzUnited KingdomOnyama Limba QUALIFIED
Adams MorascaArgentinaOnyama Limba NEW
Jeanfrancois VenereFranceStephen Shaw QUALIFIED

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