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
James ButtAustraliaIvan Magalhaes NEGOTIATION
Stacey MacleadGermanyAmy Elsner PROPOSAL
Ivar PaprockiAustraliaIvan Magalhaes RENEWAL
Salvatore StockhamSpainBernardo Dominic NEW
Costa DilliardCanadaIvan Magalhaes QUALIFIED
Aditya KuskoBrazilAmy Elsner QUALIFIED
Ivar PaprockiSpainAsiya Javayant RENEWAL
Costa DilliardCanadaIvan Magalhaes UNQUALIFIED
Mayumi KolmetzFranceBernardo Dominic PROPOSAL
Misaki RoysterRussiaOnyama Limba NEGOTIATION
Jennifer AmigonAustraliaElwin Sharvill NEW
Chavez BriddickRussiaAnna Fali NEW
Salvatore StockhamFranceAmy Elsner PROPOSAL
Claire TollnerJapanAmy Elsner NEGOTIATION
Johnson SergiFranceElwin Sharvill QUALIFIED
Darci PoquetteJapanIoni Bowcher NEW
Isabel BowleyArgentinaXuxue Feng PROPOSAL
Kadeem FlosiArgentinaAmy Elsner NEW
Deepesh ChuiArgentinaAsiya Javayant NEW
Morrow RutaArgentinaBernardo Dominic RENEWAL
Izzy GarufiGermanyIoni Bowcher NEGOTIATION
Greenwood BologniaSpainIoni Bowcher QUALIFIED
Nicolas IturbideFranceIvan Magalhaes QUALIFIED
Ricardo GauchoIndiaIoni Bowcher RENEWAL
Izzy GarufiRussiaIvan Magalhaes PROPOSAL
Salvatore StockhamItalyIoni Bowcher RENEWAL
Sinclair WaycottJapanXuxue Feng PROPOSAL
Chavez BriddickItalyOnyama Limba PROPOSAL
Deepesh ChuiCanadaElwin Sharvill PROPOSAL
Darci PoquetteUnited KingdomAnna Fali PROPOSAL
Smith GlickSpainIoni Bowcher RENEWAL
Salvatore StockhamRussiaBernardo Dominic QUALIFIED
Jefferson SchemmerFranceStephen Shaw RENEWAL
Salvatore StockhamBrazilBernardo Dominic UNQUALIFIED
Munro FerenczRussiaAnna Fali UNQUALIFIED
Jefferson SchemmerFranceAmy Elsner PROPOSAL
Mujtaba NickaUnited KingdomBernardo Dominic QUALIFIED
Chavez BriddickRussiaXuxue Feng NEW
Sinclair WaycottFranceOnyama Limba PROPOSAL
Emily WhobreyJapanIoni Bowcher NEGOTIATION
Alejandro PerinItalyOnyama Limba PROPOSAL
Claire TollnerSpainBernardo Dominic NEW
Leon OldroydCanadaOnyama Limba UNQUALIFIED
Aditya KuskoFranceIoni Bowcher NEGOTIATION
Johnson SergiCanadaOnyama Limba UNQUALIFIED
Aika InouyeRussiaIoni Bowcher UNQUALIFIED
Jeanfrancois VenereJapanIoni Bowcher QUALIFIED
Costa DilliardUnited KingdomElwin Sharvill UNQUALIFIED
James ButtBrazilOnyama Limba QUALIFIED
Leja CaldareraBrazilAmy Elsner RENEWAL
Horizontal
NameCountryRepresentativeStatus
Ashley DoeCanadaOnyama Limba PROPOSAL
Faith GillianGermanyStephen Shaw NEGOTIATION
Stacey MacleadFranceElwin Sharvill UNQUALIFIED
Clifford RimFranceAnna Fali RENEWAL
Aruna FigeroaArgentinaIvan Magalhaes PROPOSAL
Adams MorascaCanadaBernardo Dominic NEW
Rodrigues CampainBrazilAsiya Javayant NEGOTIATION
Faith GillianIndiaElwin Sharvill NEW
Maisha RulapaughCanadaAnna Fali RENEWAL
Jones VocelkaAustraliaOnyama Limba QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Greenwood BologniaUnited Kingdom2026-03-24Commercial Press PROPOSAL22Ivan Magalhaes
1001Ivar PaprockiCanada2026-04-17Truhlar And Truhlar Attys NEW68Anna Fali
1002Costa DilliardAustralia2026-04-06Morlong Associates RENEWAL63Amy Elsner
1003Isabel BowleyBrazil2026-03-23Buckley Miller Wright PROPOSAL45Amy Elsner
1004Jones VocelkaIndia2026-04-08Morlong Associates NEGOTIATION97Ioni Bowcher
1005Clifford RimGermany2026-04-18Buckley Miller Wright PROPOSAL88Asiya Javayant
1006Aika InouyeAustralia2026-03-24King, Christopher A Esq PROPOSAL10Elwin Sharvill
1007Clifford RimRussia2026-03-31Chapman, Ross E Esq UNQUALIFIED19Xuxue Feng
1008Alejandro PerinCanada2026-04-13Morlong Associates QUALIFIED89Bernardo Dominic
1009Adams MorascaItaly2026-04-13Truhlar And Truhlar Attys QUALIFIED52Amy Elsner
1010Jennifer AmigonArgentina2026-03-25Rangoni Of Florence UNQUALIFIED95Anna Fali
1011Ivar PaprockiBrazil2026-03-23Dorl, James J Esq QUALIFIED61Ioni Bowcher
1012Johnson SergiUnited Kingdom2026-03-30Morlong Associates RENEWAL81Xuxue Feng
1013Clifford RimSpain2026-04-08Dorl, James J Esq NEW3Ivan Magalhaes
1014Clifford RimItaly2026-04-01Chanay, Jeffrey A Esq QUALIFIED6Amy Elsner
1015Alejandro PerinFrance2026-04-02Rangoni Of Florence NEGOTIATION90Onyama Limba
1016Sinclair WaycottBrazil2026-04-01Benton, John B Jr PROPOSAL77Ivan Magalhaes
1017Johnson SergiItaly2026-04-02Truhlar And Truhlar Attys NEGOTIATION52Amy Elsner
1018Arvin AlbaresFrance2026-04-18Buckley Miller Wright PROPOSAL22Bernardo Dominic
1019Murillo MaletRussia2026-04-10Chapman, Ross E Esq QUALIFIED14Amy Elsner
1020Ivar PaprockiBrazil2026-04-07Chemel, James L Cpa UNQUALIFIED52Bernardo Dominic
1021Kadeem FlosiIndia2026-04-02Feltz Printing Service PROPOSAL5Stephen Shaw
1022Kaitlin OstroskyCanada2026-04-16Dorl, James J Esq RENEWAL21Anna Fali
1023Clifford RimRussia2026-03-23King, Christopher A Esq RENEWAL25Bernardo Dominic
1024Maria MarrierSpain2026-03-24Buckley Miller Wright UNQUALIFIED39Anna Fali
1025Deepesh ChuiAustralia2026-04-15Printing Dimensions QUALIFIED57Onyama Limba
1026Leja CaldareraAustralia2026-03-30Rangoni Of Florence UNQUALIFIED15Xuxue Feng
1027Emily WhobreyGermany2026-03-26Truhlar And Truhlar Attys NEGOTIATION84Asiya Javayant
1028Greenwood BologniaSpain2026-03-29Dorl, James J Esq NEGOTIATION24Ivan Magalhaes
1029Juan WieserItaly2026-04-12Truhlar And Truhlar Attys NEW45Stephen Shaw
1030Izzy GarufiCanada2026-03-24Chemel, James L Cpa NEW51Amy Elsner
1031Deepesh ChuiIndia2026-03-29Truhlar And Truhlar Attys NEGOTIATION7Bernardo Dominic
1032Munro FerenczItaly2026-04-15Truhlar And Truhlar Attys RENEWAL78Stephen Shaw
1033Julie StensethGermany2026-04-02Commercial Press QUALIFIED59Stephen Shaw
1034Izzy GarufiCanada2026-04-16Benton, John B Jr PROPOSAL13Onyama Limba
1035Juan WieserSpain2026-03-31Benton, John B Jr NEGOTIATION48Onyama Limba
1036Aruna FigeroaArgentina2026-04-20King, Christopher A Esq QUALIFIED49Ioni Bowcher
1037Murillo MaletUnited Kingdom2026-04-03Commercial Press RENEWAL45Onyama Limba
1038David DarakjyItaly2026-04-11Truhlar And Truhlar Attys PROPOSAL84Elwin Sharvill
1039Clifford RimAustralia2026-04-01Rousseaux, Michael Esq UNQUALIFIED34Asiya Javayant
1040Adams MorascaIndia2026-03-25Commercial Press RENEWAL70Anna Fali
1041Cody SaylorsGermany2026-04-13Chapman, Ross E Esq RENEWAL27Onyama Limba
1042Aika InouyeItaly2026-03-28Buckley Miller Wright NEW54Amy Elsner
1043Alejandro PerinRussia2026-04-09Printing Dimensions UNQUALIFIED18Asiya Javayant
1044Claire TollnerSpain2026-04-14Feltz Printing Service QUALIFIED51Stephen Shaw
1045Arvin AlbaresSpain2026-04-14Morlong Associates QUALIFIED78Stephen Shaw
1046Arvin AlbaresUnited Kingdom2026-03-31Morlong Associates PROPOSAL8Onyama Limba
1047Leon OldroydItaly2026-04-15Rousseaux, Michael Esq UNQUALIFIED79Amy Elsner
1048Chavez BriddickUnited Kingdom2026-03-31Truhlar And Truhlar Attys RENEWAL74Amy Elsner
1049David DarakjyGermany2026-04-14Chanay, Jeffrey A Esq UNQUALIFIED63Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Octavia MaletItalyElwin Sharvill PROPOSAL
Costa DilliardArgentinaElwin Sharvill NEGOTIATION
Antonio CaudyItalyAnna Fali RENEWAL
Octavia MaletIndiaAmy Elsner RENEWAL
Morrow RutaBrazilOnyama Limba NEW
Antonio CaudyBrazilAnna Fali UNQUALIFIED
Aruna FigeroaGermanyOnyama Limba RENEWAL
Deepesh ChuiAustraliaElwin Sharvill UNQUALIFIED
Isabel BowleyCanadaAnna Fali PROPOSAL
Rodrigues CampainBrazilIvan Magalhaes RENEWAL
James ButtSpainAmy Elsner QUALIFIED
Maisha RulapaughItalyAsiya Javayant NEGOTIATION
Chavez BriddickItalyAsiya Javayant QUALIFIED
Alejandro PerinRussiaXuxue Feng QUALIFIED
Julie StensethItalyAnna Fali UNQUALIFIED
Salvatore StockhamAustraliaBernardo Dominic UNQUALIFIED
Munro FerenczGermanyAnna Fali PROPOSAL
Leon OldroydArgentinaAmy Elsner QUALIFIED
Greenwood BologniaRussiaIoni Bowcher NEW
Chavez BriddickSpainBernardo Dominic NEGOTIATION
Clifford RimIndiaIvan Magalhaes NEGOTIATION
Jefferson SchemmerIndiaAmy Elsner NEGOTIATION
Mujtaba NickaFranceElwin Sharvill UNQUALIFIED
Jefferson SchemmerFranceIvan Magalhaes NEGOTIATION
David DarakjyCanadaXuxue Feng PROPOSAL
Mayumi KolmetzArgentinaElwin Sharvill QUALIFIED
Julie StensethBrazilIoni Bowcher NEW
Chavez BriddickRussiaAsiya Javayant QUALIFIED
Jennifer AmigonFranceIvan Magalhaes NEW
Francesco ShinkoArgentinaAmy Elsner PROPOSAL
Izzy GarufiJapanBernardo Dominic NEGOTIATION
Mujtaba NickaRussiaAnna Fali NEW
Costa DilliardCanadaBernardo Dominic QUALIFIED
Deepesh ChuiSpainIoni Bowcher NEGOTIATION
Tony FollerIndiaAmy Elsner QUALIFIED
Adams MorascaAustraliaAmy Elsner UNQUALIFIED
Leon OldroydItalyStephen Shaw UNQUALIFIED
Adams MorascaAustraliaStephen Shaw NEGOTIATION
Smith GlickCanadaBernardo Dominic RENEWAL
Ricardo GauchoIndiaAmy Elsner RENEWAL
Sinclair WaycottSpainIvan Magalhaes NEGOTIATION
Silvio SlusarskiRussiaIvan Magalhaes UNQUALIFIED
Cody SaylorsArgentinaBernardo Dominic QUALIFIED
Isabel BowleyIndiaAsiya Javayant NEGOTIATION
Faith GillianFranceAsiya Javayant NEW
Wickens NestleItalyXuxue Feng RENEWAL
Octavia MaletArgentinaAsiya Javayant RENEWAL
Jennifer AmigonAustraliaBernardo Dominic RENEWAL
Misaki RoysterCanadaStephen Shaw QUALIFIED
Julie StensethAustraliaIoni Bowcher UNQUALIFIED
Frozen Columns
Name
Ivar Paprocki
Leja Caldarera
Juan Wieser
Julie Stenseth
Cody Saylors
Silvio Slusarski
Smith Glick
Mujtaba Nicka
Jennifer Amigon
Octavia Malet
Ricardo Gaucho
Francesco Shinko
Smith Glick
Emily Whobrey
Jennifer Amigon
Salvatore Stockham
Jeanfrancois Venere
Mayumi Kolmetz
Rodrigues Campain
Antonio Caudy
Mayumi Kolmetz
Tony Foller
Aika Inouye
Kadeem Flosi
Salvatore Stockham
Tony Foller
Cody Saylors
Costa Dilliard
Adams Morasca
Mayumi Kolmetz
Salvatore Stockham
Aruna Figeroa
Francesco Shinko
David Darakjy
Silvio Slusarski
Ashley Doe
Maisha Rulapaugh
Wickens Nestle
Morrow Ruta
Mujtaba Nicka
Nicolas Iturbide
Izzy Garufi
Ashley Doe
Juan Wieser
Mayumi Kolmetz
Aika Inouye
Izzy Garufi
Aditya Kusko
Nicolas Iturbide
Ashley Doe
IdCountryDate
1000France2026-04-05
1001Australia2026-03-27
1002Japan2026-03-23
1003United Kingdom2026-04-19
1004Spain2026-04-15
1005Italy2026-03-29
1006United Kingdom2026-03-26
1007France2026-04-12
1008France2026-03-26
1009Argentina2026-04-11
1010India2026-04-07
1011Germany2026-04-06
1012Germany2026-04-10
1013United Kingdom2026-04-11
1014France2026-04-13
1015Germany2026-03-31
1016Italy2026-04-05
1017Italy2026-03-24
1018Canada2026-04-17
1019Argentina2026-04-01
1020Italy2026-04-10
1021Canada2026-03-27
1022Canada2026-03-22
1023Canada2026-04-04
1024Canada2026-03-24
1025France2026-04-09
1026Italy2026-04-04
1027Canada2026-04-05
1028Australia2026-03-23
1029Argentina2026-04-09
1030France2026-04-16
1031Russia2026-04-11
1032Brazil2026-03-24
1033India2026-03-22
1034Argentina2026-04-15
1035Italy2026-04-03
1036Australia2026-03-24
1037Japan2026-04-09
1038Germany2026-04-07
1039Japan2026-04-09
1040Japan2026-03-31
1041Germany2026-03-30
1042Argentina2026-03-29
1043France2026-03-22
1044Argentina2026-04-07
1045Australia2026-03-31
1046Germany2026-03-26
1047Spain2026-04-19
1048Canada2026-04-19
1049India2026-04-06

On-Demand Data

NameIdCountryDate
Ricardo Gaucho1000Japan2026-04-19
Octavia Malet1001Germany2026-04-19
Ivar Paprocki1002India2026-04-06
Mayumi Kolmetz1003Italy2026-04-07
Stacey Maclead1004India2026-04-04
Juan Wieser1005India2026-04-17
David Darakjy1006Italy2026-04-07
David Darakjy1007Russia2026-03-28
Misaki Royster1008Russia2026-04-12
Darci Poquette1009Spain2026-04-15
Leon Oldroyd1010Argentina2026-04-11
Mujtaba Nicka1011France2026-04-03
Kaitlin Ostrosky1012Italy2026-04-10
Misaki Royster1013Canada2026-04-19
Arvin Albares1014Canada2026-04-03
Julie Stenseth1015Canada2026-03-30
Kaitlin Ostrosky1016Spain2026-04-13
Misaki Royster1017Italy2026-04-03
Jefferson Schemmer1018United Kingdom2026-03-31
Murillo Malet1019Russia2026-04-02
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kaitlin OstroskyIndiaAmy Elsner PROPOSAL
Kadeem FlosiUnited KingdomIoni Bowcher NEGOTIATION
James ButtSpainIvan Magalhaes NEGOTIATION
Izzy GarufiJapanStephen Shaw PROPOSAL
Salvatore StockhamUnited KingdomIvan Magalhaes RENEWAL
Ricardo GauchoIndiaOnyama Limba PROPOSAL
Nicolas IturbideRussiaStephen Shaw RENEWAL
Adams MorascaSpainXuxue Feng NEW
Claire TollnerFranceAnna Fali NEW
Jeanfrancois VenereSpainAnna Fali NEW
Aditya KuskoArgentinaAnna Fali RENEWAL
Greenwood BologniaSpainXuxue Feng QUALIFIED
Johnson SergiJapanAmy Elsner RENEWAL
Misaki RoysterAustraliaIvan Magalhaes NEW
Darci PoquetteBrazilIoni Bowcher QUALIFIED
David DarakjyAustraliaStephen Shaw UNQUALIFIED
Maria MarrierFranceElwin Sharvill NEGOTIATION
Mujtaba NickaIndiaXuxue Feng UNQUALIFIED
Claire TollnerItalyAmy Elsner NEW
Jones VocelkaSpainElwin Sharvill RENEWAL
Jefferson SchemmerRussiaAnna Fali PROPOSAL
Greenwood BologniaFranceBernardo Dominic PROPOSAL
Deepesh ChuiArgentinaAsiya Javayant UNQUALIFIED
Jones VocelkaJapanAsiya Javayant QUALIFIED
Costa DilliardFranceIoni Bowcher NEW
Misaki RoysterRussiaAsiya Javayant QUALIFIED
Cody SaylorsItalyIvan Magalhaes NEGOTIATION
Isabel BowleyBrazilXuxue Feng NEGOTIATION
Jefferson SchemmerFranceBernardo Dominic UNQUALIFIED
Francesco ShinkoGermanyOnyama Limba UNQUALIFIED
Antonio CaudyGermanyElwin Sharvill NEW
Arvin AlbaresIndiaElwin Sharvill NEW
Faith GillianIndiaXuxue Feng NEGOTIATION
James ButtAustraliaXuxue Feng NEW
Greenwood BologniaJapanElwin Sharvill QUALIFIED
Julie StensethBrazilIvan Magalhaes NEW
Cody SaylorsItalyIoni Bowcher PROPOSAL
Alejandro PerinAustraliaAmy Elsner QUALIFIED
Salvatore StockhamGermanyElwin Sharvill NEGOTIATION
Ivar PaprockiUnited KingdomAmy Elsner 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>