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
Octavia MaletItalyBernardo Dominic PROPOSAL
Costa DilliardCanadaIvan Magalhaes NEGOTIATION
Maria MarrierJapanXuxue Feng RENEWAL
Misaki RoysterFranceBernardo Dominic PROPOSAL
Ashley DoeItalyAnna Fali NEW
Johnson SergiArgentinaXuxue Feng UNQUALIFIED
Wickens NestleIndiaXuxue Feng NEW
David DarakjyUnited KingdomAsiya Javayant PROPOSAL
Faith GillianCanadaOnyama Limba NEGOTIATION
Francesco ShinkoAustraliaBernardo Dominic RENEWAL
Jeanfrancois VenereRussiaAmy Elsner NEGOTIATION
Stacey MacleadItalyAsiya Javayant UNQUALIFIED
Jefferson SchemmerBrazilIvan Magalhaes RENEWAL
Jefferson SchemmerFranceIoni Bowcher QUALIFIED
Francesco ShinkoItalyAnna Fali UNQUALIFIED
Cody SaylorsJapanAsiya Javayant QUALIFIED
Costa DilliardUnited KingdomAsiya Javayant PROPOSAL
Ricardo GauchoBrazilXuxue Feng NEGOTIATION
Stacey MacleadSpainAmy Elsner QUALIFIED
Silvio SlusarskiArgentinaAnna Fali UNQUALIFIED
Tony FollerArgentinaBernardo Dominic UNQUALIFIED
Kadeem FlosiItalyOnyama Limba PROPOSAL
Misaki RoysterRussiaAmy Elsner RENEWAL
Johnson SergiUnited KingdomElwin Sharvill NEW
Emily WhobreyArgentinaOnyama Limba NEW
Aruna FigeroaCanadaElwin Sharvill NEGOTIATION
Francesco ShinkoRussiaElwin Sharvill UNQUALIFIED
Wickens NestleSpainIvan Magalhaes NEGOTIATION
Adams MorascaCanadaIvan Magalhaes NEW
Cody SaylorsGermanyStephen Shaw UNQUALIFIED
Salvatore StockhamIndiaBernardo Dominic NEGOTIATION
Emily WhobreyIndiaIoni Bowcher UNQUALIFIED
Rodrigues CampainArgentinaAmy Elsner PROPOSAL
Emily WhobreyIndiaStephen Shaw RENEWAL
Emily WhobreyGermanyIoni Bowcher PROPOSAL
James ButtCanadaAmy Elsner PROPOSAL
Arvin AlbaresIndiaOnyama Limba NEGOTIATION
Sinclair WaycottArgentinaXuxue Feng NEW
Leon OldroydGermanyXuxue Feng QUALIFIED
Cody SaylorsAustraliaElwin Sharvill RENEWAL
Alejandro PerinCanadaXuxue Feng QUALIFIED
Aika InouyeFranceXuxue Feng NEGOTIATION
Rodrigues CampainIndiaAsiya Javayant UNQUALIFIED
Ricardo GauchoItalyStephen Shaw QUALIFIED
Jennifer AmigonSpainXuxue Feng NEGOTIATION
Kaitlin OstroskyIndiaAnna Fali PROPOSAL
Morrow RutaAustraliaStephen Shaw NEW
Julie StensethCanadaOnyama Limba UNQUALIFIED
Morrow RutaFranceIoni Bowcher UNQUALIFIED
Octavia MaletRussiaAsiya Javayant RENEWAL
Horizontal
NameCountryRepresentativeStatus
Aditya KuskoGermanyIoni Bowcher NEGOTIATION
Ivar PaprockiIndiaIoni Bowcher NEW
Munro FerenczUnited KingdomOnyama Limba PROPOSAL
David DarakjyUnited KingdomOnyama Limba RENEWAL
Francesco ShinkoItalyIvan Magalhaes NEW
Juan WieserAustraliaOnyama Limba UNQUALIFIED
Emily WhobreyArgentinaStephen Shaw PROPOSAL
Adams MorascaArgentinaAnna Fali UNQUALIFIED
Tony FollerCanadaElwin Sharvill NEGOTIATION
Deepesh ChuiSpainXuxue Feng UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Izzy GarufiIndia2026-06-08Benton, John B Jr UNQUALIFIED96Bernardo Dominic
1001Clifford RimArgentina2026-06-06Morlong Associates UNQUALIFIED7Ivan Magalhaes
1002Clifford RimFrance2026-06-14Chapman, Ross E Esq NEGOTIATION16Stephen Shaw
1003Arvin AlbaresCanada2026-05-28Truhlar And Truhlar Attys PROPOSAL38Asiya Javayant
1004Ashley DoeBrazil2026-05-21Chanay, Jeffrey A Esq UNQUALIFIED51Bernardo Dominic
1005Isabel BowleyUnited Kingdom2026-06-11Chapman, Ross E Esq QUALIFIED90Elwin Sharvill
1006Mujtaba NickaSpain2026-06-16Benton, John B Jr QUALIFIED20Xuxue Feng
1007Jefferson SchemmerIndia2026-06-15Benton, John B Jr UNQUALIFIED53Anna Fali
1008Ashley DoeIndia2026-05-30Feiner Bros PROPOSAL1Amy Elsner
1009Silvio SlusarskiRussia2026-06-02Benton, John B Jr NEGOTIATION90Stephen Shaw
1010Aika InouyeGermany2026-06-18Chemel, James L Cpa NEW13Onyama Limba
1011Jones VocelkaIndia2026-05-21Commercial Press PROPOSAL24Stephen Shaw
1012James ButtFrance2026-06-16Chanay, Jeffrey A Esq UNQUALIFIED58Ioni Bowcher
1013David DarakjyIndia2026-06-05Benton, John B Jr RENEWAL59Onyama Limba
1014Izzy GarufiGermany2026-05-28Truhlar And Truhlar Attys PROPOSAL24Ivan Magalhaes
1015Chavez BriddickArgentina2026-06-14Chapman, Ross E Esq UNQUALIFIED54Asiya Javayant
1016Adams MorascaItaly2026-05-29Chanay, Jeffrey A Esq NEW92Asiya Javayant
1017Murillo MaletFrance2026-06-01Rousseaux, Michael Esq PROPOSAL43Asiya Javayant
1018Stacey MacleadArgentina2026-05-26Benton, John B Jr PROPOSAL39Ivan Magalhaes
1019Arvin AlbaresFrance2026-05-31Dorl, James J Esq UNQUALIFIED44Xuxue Feng
1020Juan WieserAustralia2026-05-30Buckley Miller Wright UNQUALIFIED88Ioni Bowcher
1021David DarakjyJapan2026-05-23Truhlar And Truhlar Attys RENEWAL56Anna Fali
1022Jones VocelkaJapan2026-06-01Morlong Associates RENEWAL36Stephen Shaw
1023Salvatore StockhamFrance2026-06-16Chapman, Ross E Esq PROPOSAL59Bernardo Dominic
1024David DarakjyAustralia2026-06-04Buckley Miller Wright QUALIFIED22Amy Elsner
1025Julie StensethBrazil2026-06-03Rousseaux, Michael Esq UNQUALIFIED41Elwin Sharvill
1026Costa DilliardItaly2026-06-01Dorl, James J Esq QUALIFIED29Xuxue Feng
1027James ButtJapan2026-05-22Rousseaux, Michael Esq PROPOSAL9Anna Fali
1028Jennifer AmigonSpain2026-06-08Truhlar And Truhlar Attys PROPOSAL14Xuxue Feng
1029Isabel BowleyRussia2026-06-08Rangoni Of Florence RENEWAL52Asiya Javayant
1030Darci PoquetteFrance2026-05-31Buckley Miller Wright RENEWAL96Anna Fali
1031Adams MorascaRussia2026-06-03Rousseaux, Michael Esq UNQUALIFIED53Ioni Bowcher
1032Antonio CaudySpain2026-06-11Truhlar And Truhlar Attys UNQUALIFIED72Elwin Sharvill
1033Wickens NestleSpain2026-06-14Feltz Printing Service NEW79Asiya Javayant
1034Munro FerenczFrance2026-06-08Feiner Bros NEGOTIATION5Ioni Bowcher
1035Claire TollnerItaly2026-06-03Chanay, Jeffrey A Esq NEGOTIATION19Ioni Bowcher
1036Julie StensethAustralia2026-05-22Morlong Associates QUALIFIED84Stephen Shaw
1037Sinclair WaycottSpain2026-06-19Feltz Printing Service NEW16Bernardo Dominic
1038Francesco ShinkoRussia2026-05-27Commercial Press PROPOSAL86Anna Fali
1039Mujtaba NickaUnited Kingdom2026-05-29Benton, John B Jr NEGOTIATION23Stephen Shaw
1040Chavez BriddickFrance2026-06-03Chanay, Jeffrey A Esq QUALIFIED27Amy Elsner
1041Chavez BriddickAustralia2026-06-02Dorl, James J Esq RENEWAL66Anna Fali
1042Salvatore StockhamBrazil2026-05-24Chemel, James L Cpa NEW36Bernardo Dominic
1043Rodrigues CampainBrazil2026-06-07Rangoni Of Florence NEGOTIATION83Stephen Shaw
1044Kadeem FlosiJapan2026-06-16Buckley Miller Wright NEW32Onyama Limba
1045David DarakjyAustralia2026-06-12Truhlar And Truhlar Attys QUALIFIED54Xuxue Feng
1046Chavez BriddickUnited Kingdom2026-06-15Buckley Miller Wright PROPOSAL7Asiya Javayant
1047Costa DilliardSpain2026-05-28Printing Dimensions NEGOTIATION14Onyama Limba
1048Darci PoquetteGermany2026-06-04Chemel, James L Cpa RENEWAL64Elwin Sharvill
1049Juan WieserGermany2026-06-03Chemel, James L Cpa PROPOSAL25Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Antonio CaudyJapanIoni Bowcher QUALIFIED
Rodrigues CampainAustraliaAnna Fali UNQUALIFIED
Wickens NestleJapanOnyama Limba PROPOSAL
Alejandro PerinArgentinaIoni Bowcher RENEWAL
Adams MorascaBrazilAmy Elsner NEW
Deepesh ChuiUnited KingdomBernardo Dominic QUALIFIED
Munro FerenczUnited KingdomStephen Shaw NEGOTIATION
Emily WhobreyJapanOnyama Limba PROPOSAL
Isabel BowleyJapanStephen Shaw NEW
Octavia MaletSpainAnna Fali PROPOSAL
Rodrigues CampainIndiaXuxue Feng QUALIFIED
James ButtCanadaIvan Magalhaes NEGOTIATION
Adams MorascaCanadaIvan Magalhaes PROPOSAL
Nicolas IturbideJapanOnyama Limba NEW
Morrow RutaAustraliaIvan Magalhaes NEGOTIATION
Salvatore StockhamAustraliaStephen Shaw PROPOSAL
David DarakjySpainIoni Bowcher NEGOTIATION
Kadeem FlosiRussiaAsiya Javayant QUALIFIED
Aika InouyeItalyXuxue Feng QUALIFIED
Aika InouyeFranceAnna Fali NEGOTIATION
Octavia MaletBrazilElwin Sharvill QUALIFIED
Johnson SergiSpainIoni Bowcher QUALIFIED
Emily WhobreyArgentinaIvan Magalhaes NEW
David DarakjyAustraliaAmy Elsner UNQUALIFIED
Faith GillianSpainBernardo Dominic NEW
Mayumi KolmetzAustraliaElwin Sharvill NEGOTIATION
Costa DilliardGermanyOnyama Limba RENEWAL
Maria MarrierCanadaIoni Bowcher RENEWAL
Mayumi KolmetzAustraliaIoni Bowcher NEGOTIATION
Greenwood BologniaCanadaAmy Elsner RENEWAL
Morrow RutaGermanyXuxue Feng RENEWAL
Ricardo GauchoBrazilXuxue Feng PROPOSAL
Deepesh ChuiItalyIoni Bowcher RENEWAL
Ricardo GauchoRussiaStephen Shaw RENEWAL
Kadeem FlosiBrazilElwin Sharvill NEW
Murillo MaletUnited KingdomStephen Shaw UNQUALIFIED
Kadeem FlosiGermanyIvan Magalhaes QUALIFIED
Sinclair WaycottUnited KingdomAmy Elsner PROPOSAL
Deepesh ChuiItalyIoni Bowcher NEW
Maisha RulapaughCanadaIvan Magalhaes NEW
Stacey MacleadItalyXuxue Feng PROPOSAL
Emily WhobreyGermanyAnna Fali QUALIFIED
Antonio CaudyIndiaXuxue Feng PROPOSAL
Wickens NestleAustraliaBernardo Dominic UNQUALIFIED
Juan WieserCanadaIoni Bowcher RENEWAL
Costa DilliardAustraliaStephen Shaw NEW
Smith GlickJapanOnyama Limba QUALIFIED
Isabel BowleyFranceAsiya Javayant UNQUALIFIED
Tony FollerSpainIoni Bowcher NEW
Izzy GarufiItalyXuxue Feng RENEWAL
Frozen Columns
Name
Maisha Rulapaugh
Ashley Doe
Aika Inouye
Nicolas Iturbide
Nicolas Iturbide
Costa Dilliard
Kaitlin Ostrosky
Sinclair Waycott
Claire Tollner
Ricardo Gaucho
Faith Gillian
Stacey Maclead
Johnson Sergi
Silvio Slusarski
Darci Poquette
Faith Gillian
Stacey Maclead
Aruna Figeroa
Wickens Nestle
Murillo Malet
James Butt
Aditya Kusko
Leon Oldroyd
Costa Dilliard
Kadeem Flosi
Claire Tollner
Mayumi Kolmetz
Aika Inouye
Arvin Albares
Jeanfrancois Venere
Claire Tollner
Isabel Bowley
Morrow Ruta
Tony Foller
Stacey Maclead
Murillo Malet
Johnson Sergi
Ricardo Gaucho
Aika Inouye
Juan Wieser
Salvatore Stockham
Darci Poquette
Adams Morasca
Cody Saylors
Wickens Nestle
Isabel Bowley
Tony Foller
Octavia Malet
Murillo Malet
Kaitlin Ostrosky
IdCountryDate
1000India2026-06-17
1001India2026-06-13
1002Germany2026-06-09
1003Australia2026-05-28
1004Argentina2026-05-28
1005Spain2026-06-16
1006France2026-06-16
1007Canada2026-05-28
1008United Kingdom2026-05-29
1009Canada2026-06-14
1010Germany2026-05-26
1011Japan2026-06-14
1012Germany2026-06-13
1013France2026-06-15
1014Germany2026-06-11
1015India2026-06-07
1016Germany2026-06-19
1017Japan2026-05-27
1018Australia2026-05-30
1019United Kingdom2026-06-01
1020Spain2026-06-03
1021Spain2026-06-04
1022Canada2026-06-05
1023Australia2026-06-07
1024India2026-06-04
1025Russia2026-05-24
1026Australia2026-05-24
1027Italy2026-06-11
1028Japan2026-06-02
1029Argentina2026-06-12
1030India2026-05-24
1031India2026-06-10
1032United Kingdom2026-06-06
1033Japan2026-06-17
1034Italy2026-06-06
1035Italy2026-06-15
1036Argentina2026-05-26
1037Italy2026-05-25
1038France2026-06-17
1039Canada2026-05-28
1040Brazil2026-06-10
1041France2026-06-07
1042Italy2026-05-22
1043Canada2026-06-03
1044Australia2026-06-12
1045United Kingdom2026-05-26
1046Brazil2026-06-09
1047Argentina2026-06-11
1048United Kingdom2026-06-11
1049Italy2026-06-14

On-Demand Data

NameIdCountryDate
Smith Glick1000Brazil2026-06-01
Costa Dilliard1001Germany2026-05-31
Maria Marrier1002Spain2026-05-25
Misaki Royster1003Brazil2026-06-12
David Darakjy1004Australia2026-05-23
Kadeem Flosi1005Japan2026-06-11
Aditya Kusko1006Spain2026-05-21
Morrow Ruta1007Brazil2026-05-25
Isabel Bowley1008Brazil2026-06-07
Adams Morasca1009France2026-05-27
Munro Ferencz1010India2026-06-03
Ricardo Gaucho1011Brazil2026-05-23
Aditya Kusko1012Italy2026-06-11
Jeanfrancois Venere1013Canada2026-06-01
Misaki Royster1014India2026-06-03
Ashley Doe1015Germany2026-05-28
Alejandro Perin1016France2026-05-29
Faith Gillian1017Japan2026-06-10
Salvatore Stockham1018Argentina2026-06-05
Johnson Sergi1019Italy2026-06-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Misaki RoysterFranceElwin Sharvill QUALIFIED
Chavez BriddickCanadaIvan Magalhaes NEGOTIATION
Faith GillianRussiaOnyama Limba NEGOTIATION
Jeanfrancois VenereArgentinaAsiya Javayant NEGOTIATION
Nicolas IturbideFranceAsiya Javayant PROPOSAL
Ivar PaprockiGermanyAsiya Javayant RENEWAL
Arvin AlbaresGermanyIvan Magalhaes QUALIFIED
Leon OldroydUnited KingdomBernardo Dominic UNQUALIFIED
Ricardo GauchoUnited KingdomAnna Fali RENEWAL
Wickens NestleSpainAmy Elsner NEGOTIATION
Jeanfrancois VenereItalyBernardo Dominic NEW
Darci PoquetteFranceAmy Elsner NEGOTIATION
Arvin AlbaresFranceAmy Elsner RENEWAL
Stacey MacleadArgentinaBernardo Dominic UNQUALIFIED
Adams MorascaJapanIvan Magalhaes UNQUALIFIED
Jefferson SchemmerGermanyIoni Bowcher UNQUALIFIED
Aika InouyeGermanyAnna Fali RENEWAL
Francesco ShinkoItalyAmy Elsner QUALIFIED
Ashley DoeBrazilAsiya Javayant NEGOTIATION
Morrow RutaJapanBernardo Dominic NEGOTIATION
Darci PoquetteAustraliaXuxue Feng QUALIFIED
Deepesh ChuiJapanAmy Elsner PROPOSAL
Stacey MacleadFranceOnyama Limba UNQUALIFIED
Chavez BriddickSpainXuxue Feng PROPOSAL
David DarakjyRussiaIvan Magalhaes QUALIFIED
Izzy GarufiCanadaStephen Shaw QUALIFIED
Octavia MaletUnited KingdomStephen Shaw PROPOSAL
Maisha RulapaughGermanyOnyama Limba PROPOSAL
Munro FerenczSpainXuxue Feng RENEWAL
Greenwood BologniaItalyStephen Shaw NEGOTIATION
Chavez BriddickItalyElwin Sharvill PROPOSAL
Alejandro PerinAustraliaAnna Fali RENEWAL
Maria MarrierCanadaStephen Shaw QUALIFIED
Aika InouyeSpainAmy Elsner NEW
Ashley DoeGermanyAmy Elsner PROPOSAL
James ButtAustraliaElwin Sharvill UNQUALIFIED
Aruna FigeroaFranceElwin Sharvill QUALIFIED
Leon OldroydItalyXuxue Feng NEW
Ricardo GauchoRussiaIoni Bowcher UNQUALIFIED
Morrow RutaJapanOnyama Limba 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>