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
Greenwood BologniaAustraliaStephen Shaw UNQUALIFIED
Mujtaba NickaAustraliaOnyama Limba PROPOSAL
Izzy GarufiItalyIvan Magalhaes PROPOSAL
Faith GillianCanadaIoni Bowcher NEW
Maisha RulapaughSpainStephen Shaw UNQUALIFIED
Juan WieserItalyOnyama Limba QUALIFIED
Misaki RoysterGermanyAsiya Javayant QUALIFIED
Leja CaldareraSpainIvan Magalhaes NEW
Leja CaldareraCanadaXuxue Feng PROPOSAL
Juan WieserItalyAnna Fali RENEWAL
Rodrigues CampainUnited KingdomBernardo Dominic QUALIFIED
Antonio CaudyGermanyAsiya Javayant PROPOSAL
Aruna FigeroaBrazilIvan Magalhaes QUALIFIED
Julie StensethFranceAmy Elsner UNQUALIFIED
Smith GlickUnited KingdomAmy Elsner NEGOTIATION
Aruna FigeroaIndiaAsiya Javayant QUALIFIED
Kaitlin OstroskyUnited KingdomAmy Elsner UNQUALIFIED
Smith GlickAustraliaXuxue Feng QUALIFIED
Smith GlickJapanAnna Fali QUALIFIED
Jennifer AmigonCanadaElwin Sharvill UNQUALIFIED
Munro FerenczBrazilStephen Shaw NEGOTIATION
Greenwood BologniaJapanElwin Sharvill RENEWAL
Misaki RoysterCanadaXuxue Feng NEW
Costa DilliardCanadaOnyama Limba NEGOTIATION
Maria MarrierCanadaBernardo Dominic UNQUALIFIED
Wickens NestleBrazilElwin Sharvill NEGOTIATION
Stacey MacleadAustraliaIvan Magalhaes PROPOSAL
Francesco ShinkoFranceIoni Bowcher QUALIFIED
Faith GillianItalyAnna Fali PROPOSAL
Clifford RimSpainAmy Elsner PROPOSAL
Deepesh ChuiArgentinaXuxue Feng NEW
Adams MorascaAustraliaIvan Magalhaes NEGOTIATION
Antonio CaudyRussiaStephen Shaw NEGOTIATION
Isabel BowleyArgentinaAsiya Javayant RENEWAL
Emily WhobreyArgentinaAsiya Javayant QUALIFIED
Aika InouyeCanadaAmy Elsner QUALIFIED
Francesco ShinkoRussiaOnyama Limba NEGOTIATION
Maisha RulapaughArgentinaXuxue Feng NEW
Jeanfrancois VenereRussiaAsiya Javayant RENEWAL
Wickens NestleBrazilIvan Magalhaes NEW
Costa DilliardGermanyIvan Magalhaes PROPOSAL
Deepesh ChuiIndiaStephen Shaw NEGOTIATION
Rodrigues CampainRussiaBernardo Dominic NEW
Aika InouyeCanadaAnna Fali RENEWAL
Jones VocelkaItalyAmy Elsner NEGOTIATION
Leon OldroydSpainIvan Magalhaes UNQUALIFIED
Jennifer AmigonGermanyIvan Magalhaes QUALIFIED
Aruna FigeroaAustraliaXuxue Feng UNQUALIFIED
Cody SaylorsJapanXuxue Feng NEW
Isabel BowleyFranceAmy Elsner NEW
Horizontal
NameCountryRepresentativeStatus
Julie StensethItalyStephen Shaw RENEWAL
Clifford RimGermanyAsiya Javayant RENEWAL
Jones VocelkaAustraliaAsiya Javayant NEGOTIATION
Maria MarrierCanadaXuxue Feng NEW
Octavia MaletAustraliaAsiya Javayant QUALIFIED
Ivar PaprockiGermanyXuxue Feng QUALIFIED
David DarakjyRussiaAmy Elsner UNQUALIFIED
Jennifer AmigonRussiaBernardo Dominic PROPOSAL
Francesco ShinkoJapanAsiya Javayant NEW
Ivar PaprockiItalyIvan Magalhaes NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Clifford RimJapan2026-04-16Commercial Press RENEWAL1Ioni Bowcher
1001Izzy GarufiJapan2026-04-10Chanay, Jeffrey A Esq PROPOSAL56Stephen Shaw
1002Nicolas IturbideFrance2026-04-03Buckley Miller Wright NEGOTIATION54Xuxue Feng
1003Julie StensethAustralia2026-04-11Dorl, James J Esq RENEWAL48Ivan Magalhaes
1004Morrow RutaUnited Kingdom2026-04-20Chemel, James L Cpa QUALIFIED4Ivan Magalhaes
1005Julie StensethBrazil2026-04-22King, Christopher A Esq UNQUALIFIED41Bernardo Dominic
1006Octavia MaletArgentina2026-03-29Rousseaux, Michael Esq QUALIFIED36Amy Elsner
1007Murillo MaletRussia2026-04-10King, Christopher A Esq UNQUALIFIED44Anna Fali
1008Clifford RimAustralia2026-04-06Truhlar And Truhlar Attys QUALIFIED59Bernardo Dominic
1009Faith GillianCanada2026-04-07Benton, John B Jr UNQUALIFIED57Ioni Bowcher
1010Clifford RimRussia2026-04-13Feltz Printing Service PROPOSAL37Elwin Sharvill
1011Salvatore StockhamFrance2026-03-26Dorl, James J Esq QUALIFIED5Xuxue Feng
1012Sinclair WaycottJapan2026-04-20Printing Dimensions UNQUALIFIED32Asiya Javayant
1013Silvio SlusarskiCanada2026-04-07Morlong Associates QUALIFIED21Bernardo Dominic
1014Kaitlin OstroskySpain2026-03-29Commercial Press QUALIFIED94Xuxue Feng
1015Isabel BowleyIndia2026-04-08Feltz Printing Service NEW81Anna Fali
1016Octavia MaletCanada2026-04-12Morlong Associates QUALIFIED4Amy Elsner
1017Misaki RoysterRussia2026-04-14Dorl, James J Esq QUALIFIED57Onyama Limba
1018Jones VocelkaBrazil2026-04-09Chemel, James L Cpa UNQUALIFIED34Ioni Bowcher
1019Munro FerenczJapan2026-04-17Feltz Printing Service UNQUALIFIED44Amy Elsner
1020Jones VocelkaGermany2026-04-16Chapman, Ross E Esq RENEWAL40Anna Fali
1021Jeanfrancois VenereIndia2026-04-20Feiner Bros RENEWAL74Elwin Sharvill
1022Mayumi KolmetzArgentina2026-04-04Rangoni Of Florence QUALIFIED24Bernardo Dominic
1023Deepesh ChuiJapan2026-04-06Buckley Miller Wright UNQUALIFIED58Ivan Magalhaes
1024Antonio CaudyFrance2026-04-09Chanay, Jeffrey A Esq NEW46Ivan Magalhaes
1025Cody SaylorsCanada2026-03-30Chemel, James L Cpa QUALIFIED49Ioni Bowcher
1026Aika InouyeArgentina2026-04-09Chanay, Jeffrey A Esq RENEWAL57Ioni Bowcher
1027Antonio CaudyGermany2026-04-21Commercial Press NEGOTIATION94Anna Fali
1028Emily WhobreyAustralia2026-04-09Dorl, James J Esq UNQUALIFIED31Onyama Limba
1029Maria MarrierGermany2026-03-25Benton, John B Jr RENEWAL45Asiya Javayant
1030Wickens NestleItaly2026-04-09Buckley Miller Wright RENEWAL38Xuxue Feng
1031Aruna FigeroaRussia2026-03-27Rangoni Of Florence QUALIFIED10Asiya Javayant
1032Johnson SergiRussia2026-04-04Chanay, Jeffrey A Esq NEGOTIATION9Asiya Javayant
1033Leon OldroydIndia2026-04-19Truhlar And Truhlar Attys RENEWAL69Amy Elsner
1034Misaki RoysterUnited Kingdom2026-04-13Dorl, James J Esq RENEWAL83Anna Fali
1035Kadeem FlosiArgentina2026-03-29Truhlar And Truhlar Attys NEGOTIATION4Amy Elsner
1036Smith GlickItaly2026-04-22Dorl, James J Esq RENEWAL6Amy Elsner
1037Silvio SlusarskiSpain2026-04-01Rousseaux, Michael Esq UNQUALIFIED17Xuxue Feng
1038Maisha RulapaughGermany2026-04-20Commercial Press QUALIFIED23Ioni Bowcher
1039Aditya KuskoCanada2026-04-08Commercial Press UNQUALIFIED74Ioni Bowcher
1040Munro FerenczItaly2026-04-03Rangoni Of Florence UNQUALIFIED20Onyama Limba
1041Antonio CaudyFrance2026-04-01Feltz Printing Service NEW68Ioni Bowcher
1042Mayumi KolmetzItaly2026-03-26Chapman, Ross E Esq UNQUALIFIED7Stephen Shaw
1043Ashley DoeJapan2026-04-15King, Christopher A Esq UNQUALIFIED32Asiya Javayant
1044Chavez BriddickRussia2026-04-11Chemel, James L Cpa NEGOTIATION16Anna Fali
1045Claire TollnerUnited Kingdom2026-04-11Truhlar And Truhlar Attys NEGOTIATION54Bernardo Dominic
1046Emily WhobreyUnited Kingdom2026-03-29Buckley Miller Wright QUALIFIED72Stephen Shaw
1047Johnson SergiSpain2026-04-05Dorl, James J Esq UNQUALIFIED73Anna Fali
1048Greenwood BologniaFrance2026-04-07Chapman, Ross E Esq UNQUALIFIED88Ioni Bowcher
1049Jennifer AmigonFrance2026-04-19Dorl, James J Esq RENEWAL81Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Octavia MaletCanadaOnyama Limba QUALIFIED
Faith GillianUnited KingdomAmy Elsner PROPOSAL
Darci PoquetteGermanyOnyama Limba PROPOSAL
Maria MarrierAustraliaAsiya Javayant QUALIFIED
Johnson SergiArgentinaOnyama Limba PROPOSAL
Kaitlin OstroskyFranceXuxue Feng PROPOSAL
Adams MorascaFranceAnna Fali NEW
Cody SaylorsArgentinaXuxue Feng PROPOSAL
Tony FollerAustraliaIvan Magalhaes QUALIFIED
Cody SaylorsIndiaAsiya Javayant QUALIFIED
Rodrigues CampainGermanyAnna Fali RENEWAL
Octavia MaletAustraliaAsiya Javayant PROPOSAL
Silvio SlusarskiJapanAnna Fali UNQUALIFIED
Maria MarrierItalyIoni Bowcher NEGOTIATION
Octavia MaletBrazilAsiya Javayant UNQUALIFIED
Greenwood BologniaFranceIvan Magalhaes QUALIFIED
Aruna FigeroaGermanyBernardo Dominic NEW
Jones VocelkaItalyIvan Magalhaes NEW
Ricardo GauchoIndiaAnna Fali PROPOSAL
Isabel BowleySpainIvan Magalhaes QUALIFIED
Alejandro PerinIndiaIvan Magalhaes RENEWAL
Nicolas IturbideBrazilAnna Fali PROPOSAL
Chavez BriddickJapanAmy Elsner NEGOTIATION
Greenwood BologniaUnited KingdomElwin Sharvill NEW
Greenwood BologniaCanadaElwin Sharvill RENEWAL
Aruna FigeroaRussiaIvan Magalhaes NEW
Jennifer AmigonRussiaElwin Sharvill RENEWAL
Aika InouyeJapanAnna Fali NEGOTIATION
Clifford RimSpainOnyama Limba UNQUALIFIED
Leon OldroydItalyAnna Fali PROPOSAL
Isabel BowleyIndiaIvan Magalhaes NEGOTIATION
Munro FerenczGermanyAmy Elsner RENEWAL
Aika InouyeRussiaStephen Shaw PROPOSAL
Kadeem FlosiBrazilBernardo Dominic QUALIFIED
Sinclair WaycottJapanBernardo Dominic QUALIFIED
Sinclair WaycottCanadaStephen Shaw PROPOSAL
Kadeem FlosiIndiaAmy Elsner NEW
Ricardo GauchoSpainIvan Magalhaes RENEWAL
Smith GlickFranceAnna Fali UNQUALIFIED
Juan WieserIndiaXuxue Feng UNQUALIFIED
Salvatore StockhamGermanyXuxue Feng PROPOSAL
Greenwood BologniaJapanAsiya Javayant PROPOSAL
Kaitlin OstroskyIndiaAsiya Javayant PROPOSAL
Claire TollnerGermanyIoni Bowcher UNQUALIFIED
Smith GlickSpainOnyama Limba QUALIFIED
Arvin AlbaresJapanBernardo Dominic NEW
Cody SaylorsItalyIoni Bowcher QUALIFIED
Wickens NestleIndiaXuxue Feng NEGOTIATION
Arvin AlbaresJapanAmy Elsner RENEWAL
Cody SaylorsArgentinaXuxue Feng QUALIFIED
Frozen Columns
Name
Costa Dilliard
Misaki Royster
Leja Caldarera
Jefferson Schemmer
Greenwood Bolognia
Leja Caldarera
Nicolas Iturbide
Faith Gillian
Rodrigues Campain
Mujtaba Nicka
Salvatore Stockham
Stacey Maclead
Sinclair Waycott
Adams Morasca
Isabel Bowley
Alejandro Perin
Ivar Paprocki
Stacey Maclead
Aika Inouye
Mujtaba Nicka
Costa Dilliard
David Darakjy
Arvin Albares
Ashley Doe
Clifford Rim
Aditya Kusko
Greenwood Bolognia
Greenwood Bolognia
Aditya Kusko
Emily Whobrey
Murillo Malet
Aruna Figeroa
Jennifer Amigon
Sinclair Waycott
Stacey Maclead
Jeanfrancois Venere
Jones Vocelka
Jennifer Amigon
Jennifer Amigon
Claire Tollner
Jones Vocelka
Faith Gillian
Leja Caldarera
Morrow Ruta
Jennifer Amigon
Aika Inouye
Silvio Slusarski
Maria Marrier
Antonio Caudy
Salvatore Stockham
IdCountryDate
1000Russia2026-04-05
1001Canada2026-04-10
1002Brazil2026-04-21
1003Canada2026-03-30
1004Russia2026-04-12
1005India2026-04-01
1006Canada2026-04-20
1007Spain2026-03-28
1008Russia2026-03-31
1009Canada2026-04-16
1010Italy2026-04-01
1011Australia2026-04-07
1012Brazil2026-03-31
1013Russia2026-03-26
1014Italy2026-04-03
1015Brazil2026-04-08
1016India2026-04-15
1017Italy2026-04-15
1018Russia2026-04-10
1019Japan2026-04-15
1020Argentina2026-03-25
1021India2026-04-13
1022Germany2026-04-04
1023United Kingdom2026-04-09
1024Brazil2026-04-15
1025Germany2026-04-21
1026France2026-04-16
1027Australia2026-04-22
1028France2026-03-28
1029Spain2026-04-11
1030Italy2026-04-04
1031Canada2026-04-11
1032France2026-04-10
1033Russia2026-04-15
1034India2026-03-28
1035Canada2026-04-14
1036France2026-03-24
1037Australia2026-04-17
1038Japan2026-04-10
1039Brazil2026-04-15
1040United Kingdom2026-04-01
1041Spain2026-04-01
1042Australia2026-04-12
1043Brazil2026-03-24
1044Spain2026-04-19
1045Spain2026-03-26
1046Argentina2026-04-12
1047Italy2026-04-09
1048Japan2026-04-05
1049France2026-04-05

On-Demand Data

NameIdCountryDate
Darci Poquette1000Japan2026-03-30
Misaki Royster1001Spain2026-04-13
Sinclair Waycott1002Italy2026-04-14
Izzy Garufi1003India2026-04-08
Chavez Briddick1004Russia2026-04-10
Leja Caldarera1005Canada2026-04-05
Morrow Ruta1006India2026-04-18
Faith Gillian1007Argentina2026-04-22
Mujtaba Nicka1008United Kingdom2026-04-21
Cody Saylors1009Australia2026-04-14
Claire Tollner1010France2026-04-14
Jennifer Amigon1011United Kingdom2026-04-14
Julie Stenseth1012France2026-04-02
Mujtaba Nicka1013Argentina2026-04-02
Mujtaba Nicka1014Germany2026-03-29
Ricardo Gaucho1015Australia2026-04-19
Antonio Caudy1016Spain2026-04-20
Costa Dilliard1017Argentina2026-04-18
Johnson Sergi1018Brazil2026-04-10
Octavia Malet1019Argentina2026-04-08
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Clifford RimGermanyOnyama Limba QUALIFIED
Julie StensethBrazilIoni Bowcher RENEWAL
Octavia MaletIndiaXuxue Feng RENEWAL
Ashley DoeCanadaIvan Magalhaes NEW
Wickens NestleFranceXuxue Feng PROPOSAL
Claire TollnerRussiaStephen Shaw UNQUALIFIED
Deepesh ChuiIndiaIvan Magalhaes QUALIFIED
Munro FerenczFranceAsiya Javayant NEW
David DarakjyRussiaAmy Elsner PROPOSAL
Silvio SlusarskiGermanyStephen Shaw UNQUALIFIED
Claire TollnerUnited KingdomAnna Fali UNQUALIFIED
Ashley DoeIndiaXuxue Feng NEW
James ButtJapanOnyama Limba UNQUALIFIED
Aika InouyeJapanAnna Fali NEW
Cody SaylorsItalyStephen Shaw PROPOSAL
Emily WhobreyGermanyAnna Fali QUALIFIED
Juan WieserFranceBernardo Dominic RENEWAL
Chavez BriddickUnited KingdomBernardo Dominic UNQUALIFIED
Octavia MaletSpainAsiya Javayant NEGOTIATION
Tony FollerCanadaAsiya Javayant PROPOSAL
Mayumi KolmetzArgentinaStephen Shaw NEGOTIATION
Juan WieserAustraliaElwin Sharvill RENEWAL
Claire TollnerRussiaAnna Fali QUALIFIED
Costa DilliardBrazilAsiya Javayant UNQUALIFIED
Adams MorascaCanadaElwin Sharvill NEW
Faith GillianBrazilStephen Shaw RENEWAL
Tony FollerArgentinaStephen Shaw PROPOSAL
Deepesh ChuiSpainXuxue Feng UNQUALIFIED
Kadeem FlosiJapanBernardo Dominic UNQUALIFIED
Costa DilliardAustraliaIvan Magalhaes NEGOTIATION
Izzy GarufiJapanOnyama Limba NEGOTIATION
Misaki RoysterCanadaBernardo Dominic NEGOTIATION
Rodrigues CampainIndiaBernardo Dominic NEW
Claire TollnerRussiaOnyama Limba PROPOSAL
Kadeem FlosiIndiaIvan Magalhaes PROPOSAL
Smith GlickBrazilXuxue Feng QUALIFIED
Jeanfrancois VenereBrazilXuxue Feng NEGOTIATION
Murillo MaletAustraliaIoni Bowcher RENEWAL
Antonio CaudyItalyAsiya Javayant NEW
Emily WhobreyBrazilAnna 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>