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
Aditya KuskoIndiaOnyama Limba NEGOTIATION
Isabel BowleyFranceAnna Fali QUALIFIED
Murillo MaletFranceAnna Fali RENEWAL
Deepesh ChuiFranceAnna Fali NEGOTIATION
Kadeem FlosiUnited KingdomIvan Magalhaes UNQUALIFIED
Jones VocelkaUnited KingdomAnna Fali UNQUALIFIED
Alejandro PerinArgentinaIoni Bowcher RENEWAL
Jefferson SchemmerBrazilIoni Bowcher PROPOSAL
Nicolas IturbideIndiaIvan Magalhaes PROPOSAL
Arvin AlbaresJapanAmy Elsner PROPOSAL
Johnson SergiGermanyAsiya Javayant UNQUALIFIED
Greenwood BologniaArgentinaOnyama Limba UNQUALIFIED
Jones VocelkaArgentinaIoni Bowcher NEW
Wickens NestleFranceOnyama Limba QUALIFIED
Izzy GarufiCanadaAnna Fali NEW
Deepesh ChuiAustraliaAnna Fali RENEWAL
Costa DilliardItalyXuxue Feng QUALIFIED
Clifford RimUnited KingdomElwin Sharvill NEGOTIATION
Adams MorascaUnited KingdomIvan Magalhaes NEGOTIATION
Jefferson SchemmerRussiaIoni Bowcher RENEWAL
Juan WieserCanadaAsiya Javayant NEW
Aditya KuskoUnited KingdomOnyama Limba PROPOSAL
Alejandro PerinArgentinaBernardo Dominic NEGOTIATION
Kadeem FlosiFranceElwin Sharvill RENEWAL
Kadeem FlosiRussiaIvan Magalhaes RENEWAL
Francesco ShinkoFranceStephen Shaw NEGOTIATION
Izzy GarufiCanadaBernardo Dominic NEW
Sinclair WaycottFranceBernardo Dominic UNQUALIFIED
Isabel BowleyRussiaIoni Bowcher QUALIFIED
Francesco ShinkoItalyElwin Sharvill NEGOTIATION
Mujtaba NickaIndiaAmy Elsner NEW
Aika InouyeArgentinaBernardo Dominic UNQUALIFIED
Ivar PaprockiIndiaStephen Shaw PROPOSAL
Maisha RulapaughJapanStephen Shaw RENEWAL
Darci PoquetteFranceAmy Elsner QUALIFIED
Kaitlin OstroskyItalyStephen Shaw NEGOTIATION
Cody SaylorsItalyAnna Fali NEGOTIATION
Jennifer AmigonBrazilOnyama Limba PROPOSAL
Adams MorascaIndiaAmy Elsner PROPOSAL
Misaki RoysterGermanyBernardo Dominic QUALIFIED
Jeanfrancois VenereRussiaElwin Sharvill NEW
Johnson SergiUnited KingdomIvan Magalhaes NEW
Maria MarrierBrazilAmy Elsner PROPOSAL
James ButtRussiaAnna Fali UNQUALIFIED
Salvatore StockhamUnited KingdomAsiya Javayant NEGOTIATION
Chavez BriddickBrazilStephen Shaw NEGOTIATION
Maria MarrierCanadaAsiya Javayant RENEWAL
Smith GlickRussiaAsiya Javayant PROPOSAL
Costa DilliardSpainXuxue Feng RENEWAL
Nicolas IturbideArgentinaStephen Shaw NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Maisha RulapaughRussiaOnyama Limba NEW
Greenwood BologniaJapanXuxue Feng NEGOTIATION
Maisha RulapaughGermanyStephen Shaw QUALIFIED
Misaki RoysterBrazilAsiya Javayant UNQUALIFIED
Smith GlickFranceIvan Magalhaes PROPOSAL
Aditya KuskoGermanyAsiya Javayant NEW
Aruna FigeroaJapanIoni Bowcher NEW
Alejandro PerinItalyBernardo Dominic NEW
Maria MarrierSpainStephen Shaw QUALIFIED
Aditya KuskoFranceAnna Fali QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000James ButtItaly2026-03-30Benton, John B Jr RENEWAL23Stephen Shaw
1001Alejandro PerinGermany2026-03-27Feiner Bros NEW8Anna Fali
1002Juan WieserArgentina2026-04-07King, Christopher A Esq QUALIFIED84Ivan Magalhaes
1003Antonio CaudyArgentina2026-04-17Benton, John B Jr NEW73Asiya Javayant
1004Cody SaylorsJapan2026-04-06Chanay, Jeffrey A Esq QUALIFIED19Amy Elsner
1005Julie StensethGermany2026-04-03Chapman, Ross E Esq RENEWAL42Xuxue Feng
1006Aditya KuskoJapan2026-04-15Feltz Printing Service NEGOTIATION35Xuxue Feng
1007Juan WieserRussia2026-04-24King, Christopher A Esq NEGOTIATION3Bernardo Dominic
1008Aditya KuskoSpain2026-04-24Feiner Bros QUALIFIED89Amy Elsner
1009Greenwood BologniaCanada2026-04-13Chanay, Jeffrey A Esq PROPOSAL15Amy Elsner
1010Julie StensethArgentina2026-04-16Feiner Bros RENEWAL53Elwin Sharvill
1011Silvio SlusarskiSpain2026-04-19Commercial Press NEGOTIATION79Anna Fali
1012Darci PoquetteCanada2026-04-12Chemel, James L Cpa PROPOSAL29Elwin Sharvill
1013Sinclair WaycottGermany2026-04-24Rangoni Of Florence NEGOTIATION12Asiya Javayant
1014Nicolas IturbideArgentina2026-04-11Buckley Miller Wright UNQUALIFIED45Asiya Javayant
1015Ricardo GauchoSpain2026-03-31Truhlar And Truhlar Attys UNQUALIFIED88Anna Fali
1016Mujtaba NickaIndia2026-03-28Chanay, Jeffrey A Esq RENEWAL36Bernardo Dominic
1017Jones VocelkaBrazil2026-04-20Rousseaux, Michael Esq NEGOTIATION34Stephen Shaw
1018Tony FollerJapan2026-04-04Rousseaux, Michael Esq PROPOSAL87Ioni Bowcher
1019Octavia MaletCanada2026-04-01King, Christopher A Esq UNQUALIFIED38Ivan Magalhaes
1020Rodrigues CampainSpain2026-03-30Chapman, Ross E Esq NEGOTIATION22Onyama Limba
1021Chavez BriddickItaly2026-04-23Commercial Press NEW98Bernardo Dominic
1022Clifford RimCanada2026-04-01Morlong Associates UNQUALIFIED27Ivan Magalhaes
1023Silvio SlusarskiArgentina2026-04-18Feiner Bros NEW39Ioni Bowcher
1024Cody SaylorsRussia2026-03-27Morlong Associates RENEWAL56Bernardo Dominic
1025James ButtRussia2026-04-05Chemel, James L Cpa QUALIFIED14Asiya Javayant
1026Cody SaylorsIndia2026-04-02Chapman, Ross E Esq UNQUALIFIED32Amy Elsner
1027Octavia MaletJapan2026-04-05Feiner Bros NEGOTIATION62Xuxue Feng
1028Costa DilliardItaly2026-03-27Chanay, Jeffrey A Esq PROPOSAL59Bernardo Dominic
1029Claire TollnerAustralia2026-04-18Dorl, James J Esq NEW15Ioni Bowcher
1030James ButtIndia2026-04-01Feiner Bros RENEWAL71Asiya Javayant
1031Maisha RulapaughBrazil2026-03-29Chemel, James L Cpa QUALIFIED37Asiya Javayant
1032Antonio CaudyCanada2026-04-15Chemel, James L Cpa UNQUALIFIED51Asiya Javayant
1033Juan WieserAustralia2026-04-09King, Christopher A Esq NEW15Anna Fali
1034Mujtaba NickaArgentina2026-04-11Commercial Press RENEWAL54Onyama Limba
1035Octavia MaletArgentina2026-04-06Chapman, Ross E Esq RENEWAL92Ioni Bowcher
1036Antonio CaudyBrazil2026-04-08Buckley Miller Wright NEW77Ioni Bowcher
1037Arvin AlbaresItaly2026-04-09Chanay, Jeffrey A Esq UNQUALIFIED18Elwin Sharvill
1038Greenwood BologniaUnited Kingdom2026-04-20Printing Dimensions QUALIFIED66Anna Fali
1039Julie StensethRussia2026-04-15Dorl, James J Esq NEGOTIATION92Onyama Limba
1040Maisha RulapaughGermany2026-04-05Feiner Bros RENEWAL91Onyama Limba
1041Darci PoquetteCanada2026-04-06Morlong Associates NEGOTIATION49Ivan Magalhaes
1042Claire TollnerAustralia2026-04-14Feltz Printing Service RENEWAL18Amy Elsner
1043James ButtFrance2026-04-06Dorl, James J Esq RENEWAL67Onyama Limba
1044Aruna FigeroaCanada2026-04-24Printing Dimensions RENEWAL8Anna Fali
1045Arvin AlbaresArgentina2026-04-04Benton, John B Jr PROPOSAL47Bernardo Dominic
1046Costa DilliardGermany2026-04-09Chapman, Ross E Esq RENEWAL80Xuxue Feng
1047Aika InouyeFrance2026-04-15King, Christopher A Esq NEGOTIATION49Ivan Magalhaes
1048Jennifer AmigonItaly2026-04-23Truhlar And Truhlar Attys UNQUALIFIED94Xuxue Feng
1049Misaki RoysterUnited Kingdom2026-04-15Commercial Press RENEWAL74Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Greenwood BologniaRussiaOnyama Limba PROPOSAL
Octavia MaletArgentinaIvan Magalhaes NEW
Darci PoquetteUnited KingdomIoni Bowcher PROPOSAL
Tony FollerJapanAmy Elsner QUALIFIED
James ButtUnited KingdomBernardo Dominic RENEWAL
Jefferson SchemmerSpainElwin Sharvill QUALIFIED
Munro FerenczItalyAmy Elsner QUALIFIED
Chavez BriddickCanadaIvan Magalhaes RENEWAL
Julie StensethItalyXuxue Feng UNQUALIFIED
Johnson SergiBrazilIvan Magalhaes UNQUALIFIED
Maisha RulapaughItalyIvan Magalhaes UNQUALIFIED
Silvio SlusarskiGermanyIoni Bowcher PROPOSAL
Francesco ShinkoArgentinaIoni Bowcher RENEWAL
Jennifer AmigonFranceXuxue Feng NEW
Arvin AlbaresFranceElwin Sharvill UNQUALIFIED
Sinclair WaycottRussiaAnna Fali UNQUALIFIED
Juan WieserSpainXuxue Feng NEGOTIATION
Maisha RulapaughRussiaElwin Sharvill QUALIFIED
Juan WieserSpainIvan Magalhaes QUALIFIED
Costa DilliardSpainAnna Fali PROPOSAL
Kaitlin OstroskyItalyOnyama Limba UNQUALIFIED
Maria MarrierFranceAnna Fali NEGOTIATION
Aditya KuskoJapanStephen Shaw RENEWAL
James ButtAustraliaAnna Fali PROPOSAL
Mayumi KolmetzGermanyXuxue Feng RENEWAL
Leon OldroydGermanyStephen Shaw RENEWAL
Stacey MacleadRussiaStephen Shaw PROPOSAL
Silvio SlusarskiFranceElwin Sharvill NEGOTIATION
Murillo MaletArgentinaBernardo Dominic NEGOTIATION
Alejandro PerinCanadaElwin Sharvill PROPOSAL
Salvatore StockhamSpainAnna Fali RENEWAL
Juan WieserRussiaAmy Elsner RENEWAL
Arvin AlbaresRussiaAsiya Javayant PROPOSAL
Wickens NestleGermanyElwin Sharvill PROPOSAL
Adams MorascaItalyStephen Shaw UNQUALIFIED
Maisha RulapaughCanadaXuxue Feng NEW
Stacey MacleadSpainBernardo Dominic NEW
Maisha RulapaughGermanyXuxue Feng UNQUALIFIED
Smith GlickAustraliaIoni Bowcher UNQUALIFIED
Mujtaba NickaArgentinaElwin Sharvill PROPOSAL
Silvio SlusarskiSpainElwin Sharvill NEGOTIATION
Jones VocelkaAustraliaBernardo Dominic NEW
David DarakjyFranceAsiya Javayant PROPOSAL
David DarakjyUnited KingdomBernardo Dominic QUALIFIED
Emily WhobreyCanadaAsiya Javayant RENEWAL
Rodrigues CampainCanadaOnyama Limba PROPOSAL
Izzy GarufiBrazilOnyama Limba NEW
Misaki RoysterAustraliaAnna Fali NEGOTIATION
Clifford RimUnited KingdomElwin Sharvill UNQUALIFIED
Darci PoquetteUnited KingdomBernardo Dominic NEGOTIATION
Frozen Columns
Name
Kadeem Flosi
Murillo Malet
Mujtaba Nicka
Leon Oldroyd
Greenwood Bolognia
Ivar Paprocki
Octavia Malet
Aruna Figeroa
Jennifer Amigon
Mayumi Kolmetz
Chavez Briddick
Darci Poquette
Claire Tollner
Jefferson Schemmer
Stacey Maclead
Tony Foller
David Darakjy
Darci Poquette
Morrow Ruta
Arvin Albares
Maisha Rulapaugh
Salvatore Stockham
Ricardo Gaucho
Izzy Garufi
Nicolas Iturbide
Darci Poquette
Cody Saylors
Octavia Malet
Morrow Ruta
Faith Gillian
Jeanfrancois Venere
David Darakjy
Jones Vocelka
Octavia Malet
Antonio Caudy
Clifford Rim
Munro Ferencz
Salvatore Stockham
Kadeem Flosi
Aika Inouye
Wickens Nestle
Misaki Royster
Stacey Maclead
Antonio Caudy
Ivar Paprocki
Francesco Shinko
Adams Morasca
Greenwood Bolognia
Rodrigues Campain
Darci Poquette
IdCountryDate
1000Germany2026-03-31
1001Spain2026-03-31
1002Canada2026-04-01
1003Japan2026-04-11
1004United Kingdom2026-04-22
1005Russia2026-04-21
1006India2026-04-21
1007Italy2026-03-28
1008Canada2026-04-05
1009Australia2026-04-08
1010Russia2026-04-15
1011Japan2026-04-03
1012Russia2026-04-16
1013Japan2026-04-07
1014Brazil2026-04-10
1015Argentina2026-04-20
1016Brazil2026-04-13
1017India2026-03-26
1018Australia2026-03-27
1019India2026-04-04
1020India2026-03-31
1021Japan2026-04-01
1022France2026-04-07
1023Australia2026-04-16
1024Spain2026-04-10
1025Argentina2026-04-14
1026Japan2026-04-14
1027Japan2026-03-26
1028Japan2026-04-24
1029Italy2026-04-20
1030Canada2026-04-12
1031Japan2026-03-31
1032France2026-04-11
1033Italy2026-04-13
1034Germany2026-04-22
1035Japan2026-03-31
1036India2026-03-28
1037Canada2026-04-24
1038Canada2026-04-18
1039Italy2026-04-23
1040Germany2026-03-26
1041Argentina2026-04-09
1042Spain2026-04-02
1043Australia2026-03-27
1044United Kingdom2026-04-02
1045United Kingdom2026-04-06
1046Russia2026-04-17
1047Australia2026-03-30
1048Russia2026-03-29
1049India2026-03-26

On-Demand Data

NameIdCountryDate
Jeanfrancois Venere1000Canada2026-04-12
Kaitlin Ostrosky1001Germany2026-04-14
Antonio Caudy1002Brazil2026-04-22
Francesco Shinko1003United Kingdom2026-04-04
Jennifer Amigon1004Japan2026-04-16
Tony Foller1005Argentina2026-04-14
Aika Inouye1006Italy2026-04-06
Stacey Maclead1007Germany2026-04-22
Jones Vocelka1008Argentina2026-03-28
Tony Foller1009United Kingdom2026-04-21
Arvin Albares1010France2026-04-16
Ivar Paprocki1011United Kingdom2026-04-08
James Butt1012France2026-04-12
Salvatore Stockham1013Spain2026-04-21
Johnson Sergi1014Brazil2026-04-13
Ivar Paprocki1015Argentina2026-04-12
Kadeem Flosi1016Canada2026-04-05
Jefferson Schemmer1017France2026-04-05
Ricardo Gaucho1018Canada2026-04-18
Francesco Shinko1019Italy2026-04-24
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Claire TollnerFranceAnna Fali UNQUALIFIED
Aditya KuskoRussiaXuxue Feng QUALIFIED
Leja CaldareraRussiaAmy Elsner UNQUALIFIED
Salvatore StockhamItalyAmy Elsner PROPOSAL
Emily WhobreyIndiaIoni Bowcher RENEWAL
Emily WhobreyItalyIoni Bowcher RENEWAL
David DarakjyFranceIvan Magalhaes NEW
Leja CaldareraIndiaAmy Elsner RENEWAL
Claire TollnerItalyBernardo Dominic UNQUALIFIED
Salvatore StockhamUnited KingdomStephen Shaw QUALIFIED
Silvio SlusarskiCanadaAnna Fali RENEWAL
Kadeem FlosiAustraliaAmy Elsner RENEWAL
Leon OldroydUnited KingdomBernardo Dominic NEGOTIATION
Kadeem FlosiBrazilIvan Magalhaes UNQUALIFIED
Adams MorascaGermanyAsiya Javayant NEW
Munro FerenczJapanAsiya Javayant PROPOSAL
Misaki RoysterFranceOnyama Limba PROPOSAL
Tony FollerIndiaXuxue Feng RENEWAL
Salvatore StockhamJapanElwin Sharvill QUALIFIED
Murillo MaletArgentinaElwin Sharvill NEW
Aruna FigeroaSpainAmy Elsner PROPOSAL
Cody SaylorsFranceAsiya Javayant NEGOTIATION
Adams MorascaUnited KingdomAnna Fali NEW
Aruna FigeroaGermanyStephen Shaw PROPOSAL
Darci PoquetteBrazilStephen Shaw NEGOTIATION
Isabel BowleyAustraliaOnyama Limba QUALIFIED
Juan WieserItalyAsiya Javayant NEGOTIATION
Emily WhobreyRussiaElwin Sharvill UNQUALIFIED
Morrow RutaRussiaElwin Sharvill RENEWAL
Leja CaldareraItalyIoni Bowcher UNQUALIFIED
Antonio CaudyIndiaBernardo Dominic PROPOSAL
Jones VocelkaCanadaAsiya Javayant UNQUALIFIED
Tony FollerBrazilOnyama Limba UNQUALIFIED
Ricardo GauchoIndiaIvan Magalhaes NEGOTIATION
Juan WieserRussiaIoni Bowcher RENEWAL
Kaitlin OstroskyJapanXuxue Feng UNQUALIFIED
Izzy GarufiItalyAnna Fali QUALIFIED
Claire TollnerItalyOnyama Limba QUALIFIED
Aika InouyeAustraliaAsiya Javayant QUALIFIED
Misaki RoysterSpainAmy Elsner 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>