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
Leon OldroydCanadaIoni Bowcher PROPOSAL
Misaki RoysterItalyBernardo Dominic PROPOSAL
Smith GlickSpainAmy Elsner NEGOTIATION
Kaitlin OstroskyUnited KingdomStephen Shaw RENEWAL
Smith GlickJapanAmy Elsner RENEWAL
Arvin AlbaresJapanXuxue Feng PROPOSAL
Sinclair WaycottAustraliaIoni Bowcher NEGOTIATION
Izzy GarufiSpainAmy Elsner RENEWAL
Cody SaylorsUnited KingdomStephen Shaw NEW
Tony FollerArgentinaStephen Shaw NEW
Mujtaba NickaAustraliaOnyama Limba NEGOTIATION
Wickens NestleFranceAsiya Javayant PROPOSAL
Salvatore StockhamSpainStephen Shaw NEW
Sinclair WaycottIndiaStephen Shaw RENEWAL
Ivar PaprockiRussiaAnna Fali NEW
Greenwood BologniaFranceIoni Bowcher UNQUALIFIED
Adams MorascaFranceStephen Shaw RENEWAL
Maria MarrierGermanyOnyama Limba QUALIFIED
Adams MorascaRussiaAmy Elsner QUALIFIED
Costa DilliardBrazilIoni Bowcher PROPOSAL
Arvin AlbaresAustraliaStephen Shaw PROPOSAL
Leon OldroydAustraliaIvan Magalhaes UNQUALIFIED
Salvatore StockhamIndiaXuxue Feng QUALIFIED
Isabel BowleyArgentinaStephen Shaw PROPOSAL
Costa DilliardCanadaIvan Magalhaes PROPOSAL
Darci PoquetteFranceAsiya Javayant QUALIFIED
Salvatore StockhamAustraliaIoni Bowcher QUALIFIED
Darci PoquetteAustraliaAnna Fali QUALIFIED
Kadeem FlosiJapanElwin Sharvill RENEWAL
Alejandro PerinIndiaAmy Elsner RENEWAL
Chavez BriddickCanadaAsiya Javayant NEGOTIATION
Antonio CaudyBrazilAsiya Javayant UNQUALIFIED
Mujtaba NickaGermanyOnyama Limba PROPOSAL
Aditya KuskoGermanyIoni Bowcher UNQUALIFIED
Wickens NestleArgentinaXuxue Feng NEGOTIATION
Rodrigues CampainFranceElwin Sharvill NEGOTIATION
Murillo MaletAustraliaIvan Magalhaes NEGOTIATION
Morrow RutaRussiaIvan Magalhaes QUALIFIED
Isabel BowleyAustraliaAsiya Javayant PROPOSAL
Greenwood BologniaAustraliaAsiya Javayant UNQUALIFIED
Misaki RoysterRussiaOnyama Limba RENEWAL
Ashley DoeRussiaAnna Fali QUALIFIED
Ashley DoeRussiaIoni Bowcher NEGOTIATION
Salvatore StockhamItalyIvan Magalhaes NEW
Jeanfrancois VenereGermanyStephen Shaw UNQUALIFIED
Smith GlickItalyElwin Sharvill NEW
Arvin AlbaresItalyXuxue Feng PROPOSAL
Costa DilliardFranceXuxue Feng QUALIFIED
David DarakjyRussiaIoni Bowcher UNQUALIFIED
Izzy GarufiIndiaAmy Elsner RENEWAL
Horizontal
NameCountryRepresentativeStatus
Wickens NestleAustraliaIvan Magalhaes NEGOTIATION
Smith GlickGermanyXuxue Feng UNQUALIFIED
Munro FerenczSpainElwin Sharvill RENEWAL
Francesco ShinkoJapanOnyama Limba QUALIFIED
Morrow RutaFranceAsiya Javayant RENEWAL
Murillo MaletRussiaIvan Magalhaes UNQUALIFIED
Sinclair WaycottCanadaAmy Elsner NEW
Sinclair WaycottGermanyAmy Elsner UNQUALIFIED
Morrow RutaArgentinaStephen Shaw NEW
Leja CaldareraIndiaAnna Fali QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Silvio SlusarskiSpain2026-04-03Dorl, James J Esq QUALIFIED42Asiya Javayant
1001Jefferson SchemmerSpain2026-04-25Printing Dimensions NEW88Anna Fali
1002Jones VocelkaItaly2026-04-17Chemel, James L Cpa RENEWAL83Elwin Sharvill
1003Juan WieserArgentina2026-04-01Dorl, James J Esq RENEWAL96Bernardo Dominic
1004Greenwood BologniaItaly2026-04-21Commercial Press NEGOTIATION69Bernardo Dominic
1005Tony FollerCanada2026-03-27Buckley Miller Wright RENEWAL15Asiya Javayant
1006Salvatore StockhamItaly2026-03-29King, Christopher A Esq UNQUALIFIED85Ioni Bowcher
1007Jennifer AmigonBrazil2026-04-13Dorl, James J Esq UNQUALIFIED15Stephen Shaw
1008Faith GillianRussia2026-04-06Benton, John B Jr NEGOTIATION81Xuxue Feng
1009Maisha RulapaughItaly2026-04-11Chemel, James L Cpa PROPOSAL68Anna Fali
1010Izzy GarufiItaly2026-04-02Chapman, Ross E Esq QUALIFIED8Stephen Shaw
1011Claire TollnerGermany2026-04-03Buckley Miller Wright QUALIFIED33Elwin Sharvill
1012Julie StensethBrazil2026-04-15Chanay, Jeffrey A Esq UNQUALIFIED97Elwin Sharvill
1013Deepesh ChuiFrance2026-04-17Truhlar And Truhlar Attys RENEWAL81Ioni Bowcher
1014Ricardo GauchoAustralia2026-04-02Benton, John B Jr UNQUALIFIED79Stephen Shaw
1015Jennifer AmigonCanada2026-04-02Benton, John B Jr PROPOSAL5Xuxue Feng
1016Isabel BowleyBrazil2026-04-08Commercial Press QUALIFIED58Asiya Javayant
1017Isabel BowleyItaly2026-04-07Chemel, James L Cpa PROPOSAL69Bernardo Dominic
1018Smith GlickCanada2026-04-16Feiner Bros QUALIFIED14Stephen Shaw
1019Faith GillianCanada2026-04-06Chapman, Ross E Esq PROPOSAL94Onyama Limba
1020Jefferson SchemmerAustralia2026-04-01Chemel, James L Cpa RENEWAL80Ioni Bowcher
1021Emily WhobreyFrance2026-04-02Feltz Printing Service NEW80Xuxue Feng
1022Ricardo GauchoCanada2026-04-07Dorl, James J Esq QUALIFIED77Elwin Sharvill
1023Munro FerenczSpain2026-04-20Benton, John B Jr UNQUALIFIED91Xuxue Feng
1024Salvatore StockhamArgentina2026-04-09Commercial Press NEW16Ioni Bowcher
1025Silvio SlusarskiSpain2026-04-03Truhlar And Truhlar Attys UNQUALIFIED50Asiya Javayant
1026Isabel BowleyAustralia2026-04-19Feltz Printing Service QUALIFIED16Elwin Sharvill
1027Deepesh ChuiGermany2026-04-23Printing Dimensions PROPOSAL35Anna Fali
1028Morrow RutaIndia2026-04-05Feiner Bros PROPOSAL84Bernardo Dominic
1029Adams MorascaAustralia2026-04-21Benton, John B Jr NEGOTIATION36Bernardo Dominic
1030Emily WhobreySpain2026-04-24Chemel, James L Cpa NEW8Bernardo Dominic
1031Murillo MaletIndia2026-04-23Feltz Printing Service NEW75Ioni Bowcher
1032Emily WhobreySpain2026-03-28Feltz Printing Service NEW20Asiya Javayant
1033Claire TollnerBrazil2026-03-30Commercial Press PROPOSAL50Elwin Sharvill
1034Isabel BowleyIndia2026-04-12Truhlar And Truhlar Attys NEW68Ivan Magalhaes
1035Ricardo GauchoSpain2026-04-03Chemel, James L Cpa NEW13Bernardo Dominic
1036Isabel BowleyRussia2026-03-28Commercial Press NEGOTIATION99Ivan Magalhaes
1037Antonio CaudyItaly2026-04-20Chanay, Jeffrey A Esq NEW42Elwin Sharvill
1038Claire TollnerGermany2026-04-17Feltz Printing Service RENEWAL54Stephen Shaw
1039Jeanfrancois VenereSpain2026-04-12Rangoni Of Florence UNQUALIFIED20Onyama Limba
1040James ButtSpain2026-04-03Chanay, Jeffrey A Esq PROPOSAL83Xuxue Feng
1041Jennifer AmigonJapan2026-03-29Rousseaux, Michael Esq RENEWAL35Stephen Shaw
1042Francesco ShinkoFrance2026-04-13Printing Dimensions PROPOSAL77Stephen Shaw
1043Sinclair WaycottSpain2026-04-20Dorl, James J Esq RENEWAL86Asiya Javayant
1044Cody SaylorsCanada2026-03-28Printing Dimensions NEGOTIATION66Anna Fali
1045Aika InouyeCanada2026-04-10Feltz Printing Service QUALIFIED13Elwin Sharvill
1046Aditya KuskoSpain2026-04-17Feltz Printing Service NEGOTIATION26Xuxue Feng
1047Jefferson SchemmerSpain2026-04-17Morlong Associates NEGOTIATION33Xuxue Feng
1048Aditya KuskoFrance2026-03-29Rousseaux, Michael Esq NEW55Xuxue Feng
1049Kaitlin OstroskyFrance2026-04-22Chanay, Jeffrey A Esq UNQUALIFIED90Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Alejandro PerinAustraliaBernardo Dominic UNQUALIFIED
Ashley DoeIndiaXuxue Feng NEW
Claire TollnerCanadaXuxue Feng RENEWAL
Julie StensethItalyStephen Shaw UNQUALIFIED
Tony FollerBrazilBernardo Dominic RENEWAL
Izzy GarufiIndiaBernardo Dominic RENEWAL
Aditya KuskoItalyXuxue Feng RENEWAL
Tony FollerUnited KingdomStephen Shaw NEW
Salvatore StockhamRussiaXuxue Feng UNQUALIFIED
Leja CaldareraUnited KingdomElwin Sharvill QUALIFIED
Wickens NestleItalyAnna Fali NEW
Adams MorascaSpainAmy Elsner NEGOTIATION
Rodrigues CampainItalyIvan Magalhaes NEGOTIATION
Sinclair WaycottBrazilBernardo Dominic UNQUALIFIED
Aika InouyeAustraliaAsiya Javayant NEGOTIATION
Leon OldroydJapanIvan Magalhaes UNQUALIFIED
Nicolas IturbideCanadaBernardo Dominic NEW
Sinclair WaycottItalyOnyama Limba NEGOTIATION
Octavia MaletFranceStephen Shaw UNQUALIFIED
Silvio SlusarskiArgentinaBernardo Dominic PROPOSAL
Arvin AlbaresJapanOnyama Limba QUALIFIED
Ashley DoeUnited KingdomElwin Sharvill RENEWAL
Claire TollnerAustraliaBernardo Dominic RENEWAL
Nicolas IturbideUnited KingdomIvan Magalhaes QUALIFIED
Costa DilliardCanadaElwin Sharvill NEW
Salvatore StockhamUnited KingdomOnyama Limba QUALIFIED
Smith GlickItalyAsiya Javayant RENEWAL
Tony FollerRussiaXuxue Feng NEW
Octavia MaletRussiaBernardo Dominic QUALIFIED
Darci PoquetteCanadaOnyama Limba RENEWAL
Wickens NestleItalyIvan Magalhaes PROPOSAL
Ivar PaprockiRussiaAnna Fali UNQUALIFIED
Chavez BriddickBrazilIvan Magalhaes PROPOSAL
Faith GillianUnited KingdomIvan Magalhaes NEW
Darci PoquetteJapanAmy Elsner UNQUALIFIED
Izzy GarufiRussiaOnyama Limba RENEWAL
Jones VocelkaFranceIoni Bowcher UNQUALIFIED
Aditya KuskoArgentinaStephen Shaw NEW
Silvio SlusarskiAustraliaIvan Magalhaes QUALIFIED
Antonio CaudyJapanAmy Elsner NEGOTIATION
Arvin AlbaresGermanyBernardo Dominic RENEWAL
Salvatore StockhamRussiaBernardo Dominic NEW
Tony FollerArgentinaXuxue Feng NEW
Ivar PaprockiUnited KingdomAsiya Javayant NEGOTIATION
Isabel BowleyAustraliaAsiya Javayant PROPOSAL
Kaitlin OstroskyArgentinaXuxue Feng NEW
Ashley DoeSpainAmy Elsner NEGOTIATION
Wickens NestleRussiaAnna Fali NEW
Tony FollerSpainOnyama Limba NEW
Rodrigues CampainBrazilOnyama Limba QUALIFIED
Frozen Columns
Name
Smith Glick
Deepesh Chui
Sinclair Waycott
Adams Morasca
Morrow Ruta
Mayumi Kolmetz
Ivar Paprocki
Johnson Sergi
Francesco Shinko
Aika Inouye
Kadeem Flosi
Aika Inouye
Greenwood Bolognia
Octavia Malet
Leja Caldarera
Deepesh Chui
Smith Glick
Mayumi Kolmetz
Leon Oldroyd
David Darakjy
Silvio Slusarski
Aruna Figeroa
Misaki Royster
Ashley Doe
Mujtaba Nicka
James Butt
Mayumi Kolmetz
Clifford Rim
Jefferson Schemmer
Juan Wieser
Julie Stenseth
Alejandro Perin
Francesco Shinko
Chavez Briddick
Salvatore Stockham
Ivar Paprocki
Stacey Maclead
Francesco Shinko
Ricardo Gaucho
Aika Inouye
Jones Vocelka
Aditya Kusko
Deepesh Chui
Rodrigues Campain
Johnson Sergi
Leon Oldroyd
Murillo Malet
Leon Oldroyd
Isabel Bowley
Salvatore Stockham
IdCountryDate
1000Japan2026-04-06
1001France2026-04-24
1002Russia2026-03-28
1003Brazil2026-04-01
1004Germany2026-04-02
1005India2026-04-25
1006France2026-04-07
1007Germany2026-04-11
1008Argentina2026-03-30
1009Italy2026-04-06
1010India2026-04-14
1011Italy2026-03-29
1012Canada2026-04-23
1013United Kingdom2026-04-10
1014Australia2026-04-20
1015India2026-04-12
1016Brazil2026-04-02
1017United Kingdom2026-03-30
1018Argentina2026-03-29
1019Spain2026-04-22
1020Spain2026-04-25
1021Russia2026-03-29
1022France2026-04-23
1023France2026-04-10
1024Spain2026-04-01
1025Canada2026-04-19
1026Argentina2026-03-29
1027Japan2026-03-28
1028Canada2026-04-10
1029United Kingdom2026-04-04
1030Brazil2026-04-18
1031Italy2026-03-31
1032Italy2026-04-05
1033Brazil2026-04-24
1034United Kingdom2026-04-10
1035Russia2026-04-03
1036France2026-04-19
1037Japan2026-04-08
1038Japan2026-04-02
1039United Kingdom2026-03-29
1040Spain2026-04-23
1041India2026-04-18
1042Russia2026-04-20
1043Brazil2026-04-12
1044Argentina2026-03-29
1045Russia2026-04-24
1046Spain2026-04-06
1047Australia2026-04-19
1048Argentina2026-03-27
1049Canada2026-04-02

On-Demand Data

NameIdCountryDate
Johnson Sergi1000Spain2026-04-01
Antonio Caudy1001Japan2026-04-17
Aditya Kusko1002Argentina2026-04-21
Murillo Malet1003Canada2026-04-08
Alejandro Perin1004United Kingdom2026-03-27
Rodrigues Campain1005Spain2026-04-14
Ricardo Gaucho1006Japan2026-04-03
Faith Gillian1007United Kingdom2026-04-12
Smith Glick1008Japan2026-04-09
Silvio Slusarski1009India2026-04-04
Costa Dilliard1010Australia2026-04-23
David Darakjy1011Russia2026-04-08
Silvio Slusarski1012Japan2026-04-14
Kadeem Flosi1013Canada2026-03-28
David Darakjy1014Argentina2026-03-28
Kadeem Flosi1015Germany2026-04-18
Juan Wieser1016Russia2026-04-14
Kaitlin Ostrosky1017France2026-04-19
Maisha Rulapaugh1018Spain2026-04-11
Francesco Shinko1019Japan2026-04-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Emily WhobreyCanadaAmy Elsner NEGOTIATION
Sinclair WaycottRussiaAmy Elsner RENEWAL
Sinclair WaycottJapanIvan Magalhaes UNQUALIFIED
Munro FerenczArgentinaAsiya Javayant NEGOTIATION
Munro FerenczUnited KingdomAsiya Javayant UNQUALIFIED
Morrow RutaSpainStephen Shaw QUALIFIED
Jeanfrancois VenereArgentinaAmy Elsner UNQUALIFIED
Julie StensethArgentinaIvan Magalhaes QUALIFIED
Tony FollerFranceElwin Sharvill PROPOSAL
Mujtaba NickaGermanyAsiya Javayant NEGOTIATION
Costa DilliardItalyOnyama Limba RENEWAL
Julie StensethFranceBernardo Dominic RENEWAL
Ashley DoeFranceIvan Magalhaes PROPOSAL
Maisha RulapaughArgentinaIvan Magalhaes UNQUALIFIED
Ivar PaprockiCanadaStephen Shaw PROPOSAL
Tony FollerIndiaAnna Fali QUALIFIED
Mujtaba NickaFranceBernardo Dominic QUALIFIED
Izzy GarufiCanadaBernardo Dominic NEW
Nicolas IturbideSpainElwin Sharvill RENEWAL
Stacey MacleadFranceBernardo Dominic QUALIFIED
Chavez BriddickItalyXuxue Feng NEGOTIATION
Juan WieserItalyStephen Shaw UNQUALIFIED
Ricardo GauchoArgentinaIoni Bowcher QUALIFIED
Juan WieserItalyAnna Fali QUALIFIED
Johnson SergiBrazilOnyama Limba QUALIFIED
Wickens NestleCanadaAmy Elsner UNQUALIFIED
Antonio CaudyAustraliaXuxue Feng NEW
James ButtRussiaIvan Magalhaes RENEWAL
Darci PoquetteSpainXuxue Feng NEW
Salvatore StockhamUnited KingdomAnna Fali PROPOSAL
Johnson SergiIndiaBernardo Dominic PROPOSAL
Ivar PaprockiBrazilAmy Elsner RENEWAL
Adams MorascaBrazilIoni Bowcher NEGOTIATION
Darci PoquetteArgentinaIvan Magalhaes PROPOSAL
James ButtAustraliaOnyama Limba NEGOTIATION
Julie StensethSpainOnyama Limba PROPOSAL
Deepesh ChuiUnited KingdomAmy Elsner RENEWAL
Murillo MaletSpainElwin Sharvill PROPOSAL
Rodrigues CampainFranceAsiya Javayant PROPOSAL
Mayumi KolmetzGermanyIvan Magalhaes 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>