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
Jennifer AmigonUnited KingdomAnna Fali PROPOSAL
Greenwood BologniaBrazilAmy Elsner NEGOTIATION
Tony FollerIndiaStephen Shaw RENEWAL
Juan WieserRussiaOnyama Limba NEGOTIATION
Jeanfrancois VenereCanadaElwin Sharvill QUALIFIED
Ricardo GauchoUnited KingdomAsiya Javayant QUALIFIED
Costa DilliardFranceIvan Magalhaes QUALIFIED
Munro FerenczRussiaAmy Elsner RENEWAL
Ricardo GauchoAustraliaBernardo Dominic NEGOTIATION
Clifford RimCanadaElwin Sharvill QUALIFIED
Clifford RimSpainAmy Elsner RENEWAL
Mayumi KolmetzCanadaAmy Elsner UNQUALIFIED
Isabel BowleyJapanAsiya Javayant QUALIFIED
Alejandro PerinArgentinaIoni Bowcher NEGOTIATION
Claire TollnerGermanyElwin Sharvill NEGOTIATION
Mayumi KolmetzGermanyIvan Magalhaes NEGOTIATION
Mujtaba NickaUnited KingdomIoni Bowcher PROPOSAL
Isabel BowleyIndiaOnyama Limba RENEWAL
Misaki RoysterGermanyIoni Bowcher QUALIFIED
Kaitlin OstroskyCanadaOnyama Limba NEW
Cody SaylorsFranceElwin Sharvill UNQUALIFIED
Mayumi KolmetzIndiaAnna Fali UNQUALIFIED
Costa DilliardRussiaOnyama Limba NEGOTIATION
Misaki RoysterItalyAsiya Javayant QUALIFIED
Ashley DoeAustraliaElwin Sharvill RENEWAL
Mujtaba NickaFranceIvan Magalhaes NEGOTIATION
Johnson SergiSpainIvan Magalhaes PROPOSAL
Julie StensethFranceAsiya Javayant NEW
Silvio SlusarskiRussiaStephen Shaw PROPOSAL
Jones VocelkaJapanXuxue Feng UNQUALIFIED
Leja CaldareraAustraliaOnyama Limba NEW
Morrow RutaSpainAmy Elsner PROPOSAL
Chavez BriddickItalyAmy Elsner NEW
Maisha RulapaughRussiaAmy Elsner PROPOSAL
Alejandro PerinArgentinaBernardo Dominic NEW
Ricardo GauchoGermanyAnna Fali NEGOTIATION
Cody SaylorsSpainBernardo Dominic UNQUALIFIED
Mujtaba NickaAustraliaIvan Magalhaes QUALIFIED
Maria MarrierIndiaAmy Elsner NEGOTIATION
Deepesh ChuiUnited KingdomAmy Elsner QUALIFIED
Mujtaba NickaUnited KingdomOnyama Limba QUALIFIED
Isabel BowleyIndiaAmy Elsner QUALIFIED
Octavia MaletAustraliaAmy Elsner QUALIFIED
Greenwood BologniaGermanyIoni Bowcher PROPOSAL
Greenwood BologniaRussiaIvan Magalhaes UNQUALIFIED
Tony FollerRussiaAsiya Javayant PROPOSAL
Aruna FigeroaFranceStephen Shaw NEW
Morrow RutaArgentinaIvan Magalhaes NEW
Emily WhobreyBrazilXuxue Feng NEGOTIATION
Johnson SergiUnited KingdomXuxue Feng UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Greenwood BologniaAustraliaXuxue Feng NEGOTIATION
Emily WhobreyBrazilAsiya Javayant RENEWAL
Rodrigues CampainFranceElwin Sharvill UNQUALIFIED
Jeanfrancois VenereRussiaIvan Magalhaes NEGOTIATION
Isabel BowleyArgentinaIvan Magalhaes NEGOTIATION
Aditya KuskoUnited KingdomAsiya Javayant QUALIFIED
Juan WieserUnited KingdomOnyama Limba NEGOTIATION
Silvio SlusarskiGermanyIvan Magalhaes NEW
Leon OldroydRussiaStephen Shaw UNQUALIFIED
Juan WieserItalyXuxue Feng PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Kaitlin OstroskyArgentina2026-06-05Rangoni Of Florence QUALIFIED74Ioni Bowcher
1001Izzy GarufiRussia2026-06-10Printing Dimensions UNQUALIFIED6Elwin Sharvill
1002Deepesh ChuiCanada2026-06-10Morlong Associates NEGOTIATION78Xuxue Feng
1003Juan WieserAustralia2026-06-01Truhlar And Truhlar Attys RENEWAL27Amy Elsner
1004Claire TollnerUnited Kingdom2026-05-16Feiner Bros QUALIFIED39Elwin Sharvill
1005Costa DilliardSpain2026-05-31Feltz Printing Service UNQUALIFIED7Xuxue Feng
1006Munro FerenczArgentina2026-06-08Commercial Press RENEWAL34Xuxue Feng
1007Silvio SlusarskiSpain2026-05-31Chapman, Ross E Esq NEGOTIATION86Elwin Sharvill
1008Mujtaba NickaFrance2026-06-06Morlong Associates UNQUALIFIED3Stephen Shaw
1009Rodrigues CampainItaly2026-05-29Feiner Bros NEW64Elwin Sharvill
1010Costa DilliardUnited Kingdom2026-05-19Benton, John B Jr QUALIFIED24Ioni Bowcher
1011Emily WhobreyArgentina2026-06-10Rangoni Of Florence NEW73Elwin Sharvill
1012Alejandro PerinAustralia2026-05-29Dorl, James J Esq RENEWAL71Amy Elsner
1013Jefferson SchemmerArgentina2026-06-08Truhlar And Truhlar Attys PROPOSAL59Elwin Sharvill
1014Alejandro PerinUnited Kingdom2026-05-24Rousseaux, Michael Esq NEGOTIATION92Anna Fali
1015Faith GillianRussia2026-05-31Rousseaux, Michael Esq NEW65Onyama Limba
1016Chavez BriddickCanada2026-05-13Benton, John B Jr NEW2Onyama Limba
1017Aditya KuskoCanada2026-05-24Chemel, James L Cpa PROPOSAL24Xuxue Feng
1018Emily WhobreyAustralia2026-05-22Printing Dimensions NEW84Anna Fali
1019Johnson SergiAustralia2026-05-30Feltz Printing Service QUALIFIED67Amy Elsner
1020Chavez BriddickGermany2026-05-20Truhlar And Truhlar Attys NEW66Ivan Magalhaes
1021Arvin AlbaresRussia2026-05-31Feiner Bros NEGOTIATION8Ivan Magalhaes
1022Mayumi KolmetzRussia2026-05-19Commercial Press UNQUALIFIED97Onyama Limba
1023Kaitlin OstroskyFrance2026-05-29Rousseaux, Michael Esq RENEWAL67Elwin Sharvill
1024Smith GlickArgentina2026-05-15Buckley Miller Wright UNQUALIFIED15Asiya Javayant
1025Alejandro PerinGermany2026-06-05Feltz Printing Service RENEWAL91Xuxue Feng
1026Emily WhobreySpain2026-06-10Chemel, James L Cpa NEW97Ivan Magalhaes
1027Maisha RulapaughUnited Kingdom2026-06-08Commercial Press NEGOTIATION39Elwin Sharvill
1028Claire TollnerUnited Kingdom2026-06-09Buckley Miller Wright PROPOSAL85Asiya Javayant
1029Isabel BowleyCanada2026-06-06Chanay, Jeffrey A Esq QUALIFIED89Ioni Bowcher
1030Wickens NestleArgentina2026-05-29King, Christopher A Esq UNQUALIFIED72Asiya Javayant
1031Salvatore StockhamIndia2026-05-25King, Christopher A Esq NEW13Amy Elsner
1032Faith GillianRussia2026-06-09Buckley Miller Wright NEW38Xuxue Feng
1033Jones VocelkaIndia2026-05-26Morlong Associates NEGOTIATION15Xuxue Feng
1034Munro FerenczArgentina2026-05-14Morlong Associates NEW77Ivan Magalhaes
1035Arvin AlbaresJapan2026-05-14Rousseaux, Michael Esq NEW20Asiya Javayant
1036Maria MarrierJapan2026-05-28King, Christopher A Esq NEW63Stephen Shaw
1037Johnson SergiItaly2026-05-17Buckley Miller Wright QUALIFIED42Xuxue Feng
1038Antonio CaudyUnited Kingdom2026-05-24Chanay, Jeffrey A Esq PROPOSAL31Ioni Bowcher
1039Leja CaldareraIndia2026-06-05Chanay, Jeffrey A Esq UNQUALIFIED21Anna Fali
1040Murillo MaletItaly2026-05-15Chanay, Jeffrey A Esq UNQUALIFIED35Ioni Bowcher
1041Leja CaldareraIndia2026-05-18Chapman, Ross E Esq QUALIFIED8Asiya Javayant
1042Johnson SergiCanada2026-05-28Commercial Press RENEWAL96Ioni Bowcher
1043Cody SaylorsIndia2026-05-30Morlong Associates PROPOSAL12Amy Elsner
1044Misaki RoysterAustralia2026-05-17Chemel, James L Cpa NEGOTIATION76Ioni Bowcher
1045Maria MarrierIndia2026-05-30Buckley Miller Wright UNQUALIFIED22Anna Fali
1046Johnson SergiIndia2026-05-24Buckley Miller Wright NEW94Asiya Javayant
1047Alejandro PerinJapan2026-05-31Benton, John B Jr RENEWAL32Xuxue Feng
1048Morrow RutaJapan2026-05-23Morlong Associates QUALIFIED23Asiya Javayant
1049James ButtGermany2026-05-30Printing Dimensions RENEWAL82Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Isabel BowleyArgentinaStephen Shaw QUALIFIED
Kaitlin OstroskyArgentinaAnna Fali UNQUALIFIED
Emily WhobreyItalyStephen Shaw UNQUALIFIED
Salvatore StockhamIndiaAmy Elsner UNQUALIFIED
Emily WhobreyFranceStephen Shaw PROPOSAL
Leon OldroydFranceIoni Bowcher UNQUALIFIED
Jones VocelkaCanadaStephen Shaw UNQUALIFIED
Jefferson SchemmerSpainOnyama Limba QUALIFIED
Ricardo GauchoIndiaElwin Sharvill PROPOSAL
Emily WhobreyBrazilOnyama Limba UNQUALIFIED
Ricardo GauchoSpainStephen Shaw QUALIFIED
Maria MarrierArgentinaAsiya Javayant QUALIFIED
Izzy GarufiSpainElwin Sharvill NEGOTIATION
James ButtGermanyXuxue Feng RENEWAL
Ivar PaprockiItalyIoni Bowcher NEGOTIATION
Costa DilliardGermanyOnyama Limba NEW
Maria MarrierAustraliaAnna Fali RENEWAL
Aruna FigeroaCanadaStephen Shaw NEW
Julie StensethUnited KingdomElwin Sharvill RENEWAL
Alejandro PerinUnited KingdomElwin Sharvill RENEWAL
Mayumi KolmetzAustraliaIoni Bowcher QUALIFIED
Misaki RoysterIndiaIvan Magalhaes QUALIFIED
Greenwood BologniaJapanOnyama Limba PROPOSAL
Ivar PaprockiCanadaAmy Elsner NEGOTIATION
Leja CaldareraFranceAmy Elsner NEGOTIATION
Emily WhobreyBrazilElwin Sharvill UNQUALIFIED
Jennifer AmigonArgentinaAsiya Javayant QUALIFIED
Isabel BowleyAustraliaBernardo Dominic UNQUALIFIED
Juan WieserItalyElwin Sharvill RENEWAL
Costa DilliardSpainAmy Elsner PROPOSAL
Aika InouyeIndiaIoni Bowcher NEGOTIATION
Leja CaldareraArgentinaStephen Shaw QUALIFIED
Arvin AlbaresAustraliaAnna Fali UNQUALIFIED
Alejandro PerinCanadaAsiya Javayant UNQUALIFIED
Aditya KuskoCanadaIvan Magalhaes RENEWAL
Leon OldroydIndiaIoni Bowcher QUALIFIED
Adams MorascaGermanyAsiya Javayant NEGOTIATION
Misaki RoysterArgentinaXuxue Feng PROPOSAL
Cody SaylorsGermanyAmy Elsner UNQUALIFIED
Sinclair WaycottFranceAsiya Javayant RENEWAL
Emily WhobreySpainXuxue Feng RENEWAL
Munro FerenczItalyXuxue Feng RENEWAL
Jennifer AmigonSpainElwin Sharvill PROPOSAL
Julie StensethUnited KingdomElwin Sharvill NEW
Leja CaldareraGermanyIoni Bowcher UNQUALIFIED
Leja CaldareraCanadaBernardo Dominic PROPOSAL
Faith GillianItalyXuxue Feng RENEWAL
Izzy GarufiJapanOnyama Limba RENEWAL
Rodrigues CampainJapanIoni Bowcher NEW
Nicolas IturbideAustraliaIoni Bowcher UNQUALIFIED
Frozen Columns
Name
Izzy Garufi
Octavia Malet
Adams Morasca
Juan Wieser
Octavia Malet
Kaitlin Ostrosky
Clifford Rim
Morrow Ruta
Arvin Albares
Deepesh Chui
Darci Poquette
David Darakjy
Juan Wieser
Costa Dilliard
Silvio Slusarski
Greenwood Bolognia
Sinclair Waycott
Salvatore Stockham
Arvin Albares
Octavia Malet
Sinclair Waycott
Juan Wieser
Izzy Garufi
Aika Inouye
Adams Morasca
Morrow Ruta
Aika Inouye
Greenwood Bolognia
Johnson Sergi
Wickens Nestle
Alejandro Perin
Alejandro Perin
Cody Saylors
Munro Ferencz
Chavez Briddick
Aruna Figeroa
Claire Tollner
Arvin Albares
Aika Inouye
Deepesh Chui
Kaitlin Ostrosky
Adams Morasca
Clifford Rim
Darci Poquette
Jeanfrancois Venere
Kadeem Flosi
Munro Ferencz
Wickens Nestle
Jones Vocelka
Costa Dilliard
IdCountryDate
1000Italy2026-05-20
1001Australia2026-05-29
1002United Kingdom2026-06-10
1003France2026-05-17
1004Spain2026-05-25
1005Russia2026-05-30
1006Brazil2026-06-11
1007Russia2026-06-09
1008Canada2026-05-25
1009Italy2026-05-25
1010Russia2026-06-02
1011United Kingdom2026-05-14
1012Spain2026-05-25
1013France2026-05-29
1014United Kingdom2026-05-20
1015United Kingdom2026-06-11
1016India2026-05-14
1017France2026-05-26
1018Germany2026-05-16
1019United Kingdom2026-06-03
1020United Kingdom2026-05-17
1021United Kingdom2026-06-05
1022Spain2026-05-19
1023Russia2026-05-18
1024Russia2026-06-03
1025Argentina2026-05-14
1026India2026-05-29
1027Germany2026-05-27
1028Germany2026-05-21
1029India2026-05-19
1030Germany2026-05-18
1031Argentina2026-05-19
1032France2026-06-08
1033Argentina2026-05-28
1034United Kingdom2026-06-06
1035United Kingdom2026-05-24
1036Italy2026-05-23
1037Spain2026-05-30
1038India2026-05-31
1039Spain2026-05-25
1040Argentina2026-05-13
1041United Kingdom2026-05-13
1042Russia2026-05-15
1043Russia2026-05-20
1044India2026-05-30
1045Brazil2026-05-25
1046Italy2026-05-14
1047Russia2026-06-08
1048Spain2026-05-23
1049Argentina2026-05-23

On-Demand Data

NameIdCountryDate
Leja Caldarera1000Australia2026-06-08
Clifford Rim1001Germany2026-06-07
Chavez Briddick1002Russia2026-06-08
Wickens Nestle1003United Kingdom2026-05-14
Ashley Doe1004Argentina2026-05-17
Antonio Caudy1005France2026-05-15
Nicolas Iturbide1006Brazil2026-05-21
Costa Dilliard1007Germany2026-05-24
Silvio Slusarski1008Japan2026-05-26
Octavia Malet1009India2026-05-16
Johnson Sergi1010Italy2026-06-01
Leon Oldroyd1011Germany2026-05-30
Mujtaba Nicka1012France2026-05-24
Jones Vocelka1013Argentina2026-05-29
Munro Ferencz1014Brazil2026-05-18
Chavez Briddick1015Canada2026-06-11
Tony Foller1016Russia2026-05-30
Julie Stenseth1017Italy2026-05-18
Cody Saylors1018Japan2026-06-02
Jefferson Schemmer1019France2026-06-09
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Mujtaba NickaArgentinaIoni Bowcher RENEWAL
Wickens NestleRussiaIoni Bowcher RENEWAL
Octavia MaletUnited KingdomXuxue Feng NEGOTIATION
Octavia MaletIndiaIoni Bowcher UNQUALIFIED
Deepesh ChuiIndiaAmy Elsner NEW
Izzy GarufiAustraliaBernardo Dominic QUALIFIED
David DarakjyFranceIoni Bowcher UNQUALIFIED
Johnson SergiIndiaStephen Shaw RENEWAL
Sinclair WaycottRussiaElwin Sharvill NEW
Murillo MaletItalyAmy Elsner NEGOTIATION
Julie StensethArgentinaAmy Elsner RENEWAL
Greenwood BologniaRussiaIvan Magalhaes QUALIFIED
Leja CaldareraJapanIvan Magalhaes PROPOSAL
Johnson SergiAustraliaXuxue Feng PROPOSAL
Kadeem FlosiArgentinaAnna Fali NEW
Misaki RoysterCanadaAnna Fali UNQUALIFIED
Kadeem FlosiRussiaOnyama Limba PROPOSAL
Kaitlin OstroskyArgentinaAmy Elsner NEGOTIATION
Juan WieserIndiaIoni Bowcher UNQUALIFIED
Isabel BowleyFranceAsiya Javayant NEGOTIATION
Arvin AlbaresRussiaIvan Magalhaes NEW
Maisha RulapaughCanadaIvan Magalhaes RENEWAL
Chavez BriddickJapanIoni Bowcher RENEWAL
Leon OldroydIndiaAsiya Javayant PROPOSAL
Aditya KuskoGermanyAsiya Javayant UNQUALIFIED
Claire TollnerBrazilAsiya Javayant UNQUALIFIED
Juan WieserIndiaAnna Fali NEW
Jennifer AmigonFranceXuxue Feng NEGOTIATION
Smith GlickArgentinaOnyama Limba RENEWAL
Emily WhobreyItalyAsiya Javayant QUALIFIED
Mayumi KolmetzGermanyBernardo Dominic PROPOSAL
Jones VocelkaRussiaElwin Sharvill NEW
Kadeem FlosiGermanyAnna Fali NEW
Leja CaldareraUnited KingdomBernardo Dominic QUALIFIED
Wickens NestleRussiaOnyama Limba RENEWAL
Emily WhobreyItalyBernardo Dominic RENEWAL
Isabel BowleyGermanyIoni Bowcher NEGOTIATION
Izzy GarufiSpainStephen Shaw NEGOTIATION
Jefferson SchemmerAustraliaAsiya Javayant NEW
Stacey MacleadRussiaXuxue Feng 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>