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
Izzy GarufiItalyAmy Elsner PROPOSAL
Ashley DoeAustraliaAmy Elsner RENEWAL
Jones VocelkaIndiaOnyama Limba UNQUALIFIED
Julie StensethAustraliaOnyama Limba QUALIFIED
Ashley DoeBrazilXuxue Feng NEGOTIATION
Morrow RutaUnited KingdomElwin Sharvill QUALIFIED
Jennifer AmigonRussiaAsiya Javayant NEW
Ivar PaprockiArgentinaIoni Bowcher QUALIFIED
Arvin AlbaresBrazilBernardo Dominic NEW
Claire TollnerJapanAnna Fali NEW
Aruna FigeroaJapanIvan Magalhaes RENEWAL
Kadeem FlosiAustraliaStephen Shaw NEGOTIATION
Johnson SergiAustraliaBernardo Dominic NEW
Jones VocelkaItalyOnyama Limba UNQUALIFIED
Smith GlickArgentinaOnyama Limba NEGOTIATION
Johnson SergiRussiaIoni Bowcher PROPOSAL
Jefferson SchemmerRussiaBernardo Dominic QUALIFIED
Jeanfrancois VenereJapanAmy Elsner RENEWAL
Francesco ShinkoItalyElwin Sharvill NEGOTIATION
Aika InouyeJapanIvan Magalhaes QUALIFIED
Octavia MaletFranceOnyama Limba NEGOTIATION
Silvio SlusarskiGermanyXuxue Feng UNQUALIFIED
Francesco ShinkoGermanyAnna Fali UNQUALIFIED
Leon OldroydJapanAsiya Javayant QUALIFIED
Cody SaylorsArgentinaIoni Bowcher NEGOTIATION
David DarakjyUnited KingdomAsiya Javayant NEGOTIATION
Jeanfrancois VenereUnited KingdomIoni Bowcher QUALIFIED
Silvio SlusarskiCanadaElwin Sharvill NEW
Jefferson SchemmerJapanElwin Sharvill NEW
Juan WieserGermanyXuxue Feng QUALIFIED
Clifford RimUnited KingdomBernardo Dominic NEGOTIATION
Kaitlin OstroskyFranceBernardo Dominic PROPOSAL
Morrow RutaJapanAmy Elsner NEW
Misaki RoysterUnited KingdomElwin Sharvill RENEWAL
Silvio SlusarskiJapanAnna Fali QUALIFIED
Octavia MaletUnited KingdomStephen Shaw PROPOSAL
Morrow RutaRussiaAnna Fali PROPOSAL
Aditya KuskoGermanyStephen Shaw RENEWAL
Julie StensethBrazilIoni Bowcher PROPOSAL
Mayumi KolmetzRussiaAsiya Javayant PROPOSAL
Octavia MaletItalyAmy Elsner NEW
Rodrigues CampainItalyOnyama Limba NEW
Tony FollerItalyXuxue Feng QUALIFIED
Emily WhobreyItalyAnna Fali RENEWAL
Alejandro PerinFranceOnyama Limba RENEWAL
Salvatore StockhamCanadaIvan Magalhaes QUALIFIED
Kaitlin OstroskyBrazilBernardo Dominic PROPOSAL
Emily WhobreyItalyIoni Bowcher RENEWAL
Francesco ShinkoFranceAnna Fali PROPOSAL
David DarakjyGermanyAnna Fali QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Jeanfrancois VenereItalyAsiya Javayant NEGOTIATION
David DarakjyItalyAmy Elsner NEW
Deepesh ChuiCanadaXuxue Feng UNQUALIFIED
Ivar PaprockiCanadaStephen Shaw NEW
Cody SaylorsJapanIvan Magalhaes RENEWAL
Alejandro PerinAustraliaElwin Sharvill NEW
Ashley DoeUnited KingdomStephen Shaw RENEWAL
Mayumi KolmetzSpainElwin Sharvill QUALIFIED
Adams MorascaGermanyIvan Magalhaes UNQUALIFIED
Sinclair WaycottAustraliaBernardo Dominic RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jefferson SchemmerJapan2026-05-01King, Christopher A Esq NEGOTIATION50Ivan Magalhaes
1001Salvatore StockhamFrance2026-05-12Dorl, James J Esq UNQUALIFIED70Asiya Javayant
1002Nicolas IturbideRussia2026-04-26Commercial Press QUALIFIED96Onyama Limba
1003Jeanfrancois VenereIndia2026-05-06Truhlar And Truhlar Attys UNQUALIFIED44Bernardo Dominic
1004David DarakjyJapan2026-04-17Commercial Press UNQUALIFIED17Asiya Javayant
1005Faith GillianFrance2026-05-06Rangoni Of Florence UNQUALIFIED25Asiya Javayant
1006Smith GlickRussia2026-05-05Rousseaux, Michael Esq QUALIFIED47Bernardo Dominic
1007Maisha RulapaughIndia2026-04-28Benton, John B Jr PROPOSAL36Anna Fali
1008Julie StensethUnited Kingdom2026-05-11Rangoni Of Florence RENEWAL50Stephen Shaw
1009Chavez BriddickItaly2026-05-07Printing Dimensions QUALIFIED91Xuxue Feng
1010Isabel BowleyUnited Kingdom2026-05-06Morlong Associates PROPOSAL44Asiya Javayant
1011Octavia MaletCanada2026-05-13Printing Dimensions QUALIFIED73Elwin Sharvill
1012Nicolas IturbideBrazil2026-04-21Feltz Printing Service QUALIFIED22Ioni Bowcher
1013Munro FerenczFrance2026-04-19Feiner Bros PROPOSAL78Xuxue Feng
1014Emily WhobreyArgentina2026-05-04Chanay, Jeffrey A Esq QUALIFIED30Elwin Sharvill
1015Aika InouyeBrazil2026-05-13King, Christopher A Esq UNQUALIFIED9Ivan Magalhaes
1016Emily WhobreyArgentina2026-04-16Benton, John B Jr PROPOSAL56Ivan Magalhaes
1017Kadeem FlosiBrazil2026-05-11Chanay, Jeffrey A Esq NEGOTIATION30Amy Elsner
1018Claire TollnerSpain2026-04-28Printing Dimensions PROPOSAL40Xuxue Feng
1019Maria MarrierFrance2026-04-26Feltz Printing Service NEW93Elwin Sharvill
1020Maria MarrierGermany2026-04-25Truhlar And Truhlar Attys RENEWAL91Asiya Javayant
1021Jeanfrancois VenereGermany2026-04-26King, Christopher A Esq PROPOSAL13Bernardo Dominic
1022Mujtaba NickaUnited Kingdom2026-05-03Chemel, James L Cpa RENEWAL51Xuxue Feng
1023Izzy GarufiUnited Kingdom2026-04-30Chemel, James L Cpa UNQUALIFIED89Anna Fali
1024Salvatore StockhamItaly2026-05-14Truhlar And Truhlar Attys PROPOSAL25Anna Fali
1025Leon OldroydUnited Kingdom2026-04-17Commercial Press PROPOSAL89Elwin Sharvill
1026Deepesh ChuiFrance2026-04-30Chapman, Ross E Esq RENEWAL98Ivan Magalhaes
1027Darci PoquetteCanada2026-04-15Dorl, James J Esq RENEWAL58Asiya Javayant
1028Jennifer AmigonBrazil2026-04-25Benton, John B Jr PROPOSAL93Elwin Sharvill
1029Adams MorascaGermany2026-05-08Chapman, Ross E Esq NEW78Elwin Sharvill
1030Arvin AlbaresArgentina2026-05-12Feltz Printing Service NEGOTIATION89Bernardo Dominic
1031Chavez BriddickSpain2026-05-06Rousseaux, Michael Esq NEW45Anna Fali
1032Francesco ShinkoAustralia2026-04-29Chanay, Jeffrey A Esq UNQUALIFIED2Onyama Limba
1033Morrow RutaIndia2026-05-05King, Christopher A Esq NEW37Ioni Bowcher
1034Izzy GarufiFrance2026-05-07Printing Dimensions PROPOSAL72Bernardo Dominic
1035Jeanfrancois VenereJapan2026-05-09Buckley Miller Wright QUALIFIED98Amy Elsner
1036Stacey MacleadSpain2026-04-21Buckley Miller Wright UNQUALIFIED50Anna Fali
1037Antonio CaudyArgentina2026-05-04King, Christopher A Esq QUALIFIED96Bernardo Dominic
1038Mujtaba NickaFrance2026-04-24Buckley Miller Wright QUALIFIED32Elwin Sharvill
1039Juan WieserRussia2026-05-08Commercial Press UNQUALIFIED1Asiya Javayant
1040Darci PoquetteArgentina2026-05-11Printing Dimensions NEW93Ivan Magalhaes
1041Morrow RutaItaly2026-05-13Commercial Press NEGOTIATION35Asiya Javayant
1042Kaitlin OstroskyAustralia2026-04-19Chanay, Jeffrey A Esq RENEWAL22Xuxue Feng
1043Smith GlickRussia2026-05-05Rangoni Of Florence NEW31Onyama Limba
1044Adams MorascaBrazil2026-04-18Dorl, James J Esq NEW42Onyama Limba
1045Leja CaldareraFrance2026-04-15Chemel, James L Cpa NEGOTIATION93Stephen Shaw
1046Wickens NestleUnited Kingdom2026-05-07King, Christopher A Esq NEW84Onyama Limba
1047Clifford RimCanada2026-05-02Chapman, Ross E Esq PROPOSAL12Anna Fali
1048Munro FerenczFrance2026-05-03King, Christopher A Esq NEGOTIATION99Ioni Bowcher
1049Ashley DoeBrazil2026-04-25Morlong Associates RENEWAL35Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Claire TollnerJapanXuxue Feng RENEWAL
Deepesh ChuiUnited KingdomElwin Sharvill RENEWAL
Sinclair WaycottItalyIvan Magalhaes PROPOSAL
Silvio SlusarskiIndiaOnyama Limba RENEWAL
Jeanfrancois VenereIndiaBernardo Dominic QUALIFIED
Johnson SergiCanadaOnyama Limba NEGOTIATION
Tony FollerRussiaOnyama Limba RENEWAL
Leon OldroydAustraliaIoni Bowcher NEGOTIATION
David DarakjyItalyIvan Magalhaes QUALIFIED
Leon OldroydJapanElwin Sharvill QUALIFIED
Tony FollerFranceIoni Bowcher QUALIFIED
Arvin AlbaresGermanyOnyama Limba QUALIFIED
Leon OldroydAustraliaOnyama Limba UNQUALIFIED
Morrow RutaFranceOnyama Limba NEGOTIATION
Isabel BowleyRussiaIoni Bowcher UNQUALIFIED
Morrow RutaItalyAnna Fali NEGOTIATION
Izzy GarufiFranceAsiya Javayant RENEWAL
Darci PoquetteItalyIoni Bowcher QUALIFIED
Julie StensethCanadaBernardo Dominic NEW
Greenwood BologniaJapanStephen Shaw RENEWAL
Smith GlickRussiaAnna Fali UNQUALIFIED
Mujtaba NickaIndiaXuxue Feng NEGOTIATION
Alejandro PerinBrazilIvan Magalhaes NEW
Costa DilliardFranceIoni Bowcher PROPOSAL
Rodrigues CampainBrazilAmy Elsner QUALIFIED
Leja CaldareraArgentinaStephen Shaw NEW
Rodrigues CampainItalyBernardo Dominic PROPOSAL
Chavez BriddickRussiaOnyama Limba PROPOSAL
Adams MorascaJapanOnyama Limba UNQUALIFIED
Tony FollerItalyBernardo Dominic NEW
Claire TollnerFranceAsiya Javayant RENEWAL
Alejandro PerinSpainElwin Sharvill UNQUALIFIED
Munro FerenczArgentinaXuxue Feng NEGOTIATION
Sinclair WaycottCanadaIoni Bowcher NEGOTIATION
Clifford RimArgentinaXuxue Feng RENEWAL
Chavez BriddickCanadaIoni Bowcher PROPOSAL
Julie StensethItalyIoni Bowcher UNQUALIFIED
Maisha RulapaughRussiaIvan Magalhaes UNQUALIFIED
Cody SaylorsItalyBernardo Dominic RENEWAL
Misaki RoysterIndiaAnna Fali PROPOSAL
Ricardo GauchoFranceIoni Bowcher NEGOTIATION
Murillo MaletUnited KingdomXuxue Feng RENEWAL
Clifford RimBrazilElwin Sharvill NEGOTIATION
Aika InouyeJapanElwin Sharvill RENEWAL
Claire TollnerGermanyStephen Shaw NEW
Mayumi KolmetzCanadaElwin Sharvill UNQUALIFIED
Murillo MaletIndiaAsiya Javayant NEGOTIATION
Deepesh ChuiItalyAmy Elsner RENEWAL
Silvio SlusarskiArgentinaIvan Magalhaes RENEWAL
Adams MorascaIndiaXuxue Feng RENEWAL
Frozen Columns
Name
Kadeem Flosi
Ricardo Gaucho
Wickens Nestle
Antonio Caudy
James Butt
Maria Marrier
Ashley Doe
Misaki Royster
Silvio Slusarski
Nicolas Iturbide
Sinclair Waycott
Chavez Briddick
Jones Vocelka
Antonio Caudy
David Darakjy
Silvio Slusarski
Faith Gillian
Morrow Ruta
Tony Foller
James Butt
Ivar Paprocki
Rodrigues Campain
Smith Glick
Smith Glick
Morrow Ruta
Murillo Malet
Maria Marrier
Ashley Doe
Smith Glick
Clifford Rim
Mujtaba Nicka
Chavez Briddick
Misaki Royster
Ivar Paprocki
Munro Ferencz
Mujtaba Nicka
Darci Poquette
Misaki Royster
Ricardo Gaucho
Aditya Kusko
Leja Caldarera
Costa Dilliard
Chavez Briddick
Kadeem Flosi
Chavez Briddick
Silvio Slusarski
Claire Tollner
Morrow Ruta
Alejandro Perin
Rodrigues Campain
IdCountryDate
1000Italy2026-05-06
1001India2026-04-27
1002India2026-05-03
1003France2026-05-05
1004India2026-04-19
1005Japan2026-05-09
1006Japan2026-04-17
1007Australia2026-05-03
1008India2026-05-09
1009Spain2026-04-24
1010Canada2026-04-24
1011Italy2026-05-06
1012Russia2026-05-08
1013Spain2026-04-21
1014India2026-05-06
1015Canada2026-05-07
1016United Kingdom2026-04-25
1017Spain2026-04-17
1018Italy2026-05-11
1019Spain2026-05-08
1020United Kingdom2026-05-05
1021Brazil2026-04-24
1022India2026-04-20
1023United Kingdom2026-04-17
1024India2026-04-18
1025Russia2026-04-25
1026Brazil2026-05-01
1027United Kingdom2026-05-02
1028Germany2026-04-30
1029Brazil2026-04-16
1030France2026-04-17
1031United Kingdom2026-04-27
1032Germany2026-04-26
1033United Kingdom2026-05-04
1034Argentina2026-05-11
1035Argentina2026-04-25
1036India2026-05-06
1037Spain2026-04-30
1038Japan2026-04-17
1039Australia2026-04-18
1040Germany2026-05-01
1041Australia2026-05-13
1042Spain2026-04-21
1043Russia2026-04-21
1044Russia2026-05-10
1045United Kingdom2026-04-26
1046Australia2026-05-06
1047France2026-04-23
1048Italy2026-05-07
1049Germany2026-05-06

On-Demand Data

NameIdCountryDate
Juan Wieser1000Germany2026-05-06
Juan Wieser1001Japan2026-05-08
Munro Ferencz1002France2026-04-22
Izzy Garufi1003Brazil2026-05-05
David Darakjy1004Australia2026-04-18
Ashley Doe1005Argentina2026-05-12
Silvio Slusarski1006Canada2026-05-01
Tony Foller1007Canada2026-05-02
Adams Morasca1008India2026-04-25
Smith Glick1009Argentina2026-05-01
Ivar Paprocki1010Russia2026-04-25
Silvio Slusarski1011Spain2026-05-02
James Butt1012United Kingdom2026-05-14
Smith Glick1013Australia2026-04-28
Adams Morasca1014Brazil2026-05-12
Ivar Paprocki1015Canada2026-04-17
Jeanfrancois Venere1016Australia2026-04-26
James Butt1017Brazil2026-05-14
Juan Wieser1018Australia2026-04-22
Chavez Briddick1019Australia2026-05-13
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leon OldroydBrazilAsiya Javayant UNQUALIFIED
Alejandro PerinRussiaStephen Shaw PROPOSAL
Silvio SlusarskiRussiaIvan Magalhaes RENEWAL
Jennifer AmigonIndiaIoni Bowcher UNQUALIFIED
Sinclair WaycottIndiaXuxue Feng NEW
Costa DilliardCanadaXuxue Feng PROPOSAL
Emily WhobreyCanadaXuxue Feng NEGOTIATION
Cody SaylorsIndiaIoni Bowcher RENEWAL
Jones VocelkaJapanBernardo Dominic UNQUALIFIED
Jeanfrancois VenereUnited KingdomOnyama Limba PROPOSAL
Silvio SlusarskiIndiaIoni Bowcher NEGOTIATION
Ashley DoeSpainIoni Bowcher NEW
Jefferson SchemmerBrazilBernardo Dominic UNQUALIFIED
Adams MorascaUnited KingdomElwin Sharvill QUALIFIED
Adams MorascaBrazilAsiya Javayant QUALIFIED
David DarakjySpainElwin Sharvill RENEWAL
Stacey MacleadGermanyElwin Sharvill UNQUALIFIED
Murillo MaletFranceBernardo Dominic NEGOTIATION
Chavez BriddickCanadaAmy Elsner UNQUALIFIED
Murillo MaletFranceStephen Shaw PROPOSAL
Tony FollerSpainAnna Fali QUALIFIED
Silvio SlusarskiGermanyXuxue Feng NEW
Jeanfrancois VenereJapanIvan Magalhaes NEGOTIATION
Silvio SlusarskiJapanOnyama Limba UNQUALIFIED
Aika InouyeArgentinaElwin Sharvill NEW
Adams MorascaSpainBernardo Dominic NEGOTIATION
Costa DilliardUnited KingdomAmy Elsner PROPOSAL
Emily WhobreyJapanAnna Fali PROPOSAL
Salvatore StockhamBrazilStephen Shaw QUALIFIED
Cody SaylorsItalyAnna Fali NEW
Mayumi KolmetzRussiaOnyama Limba PROPOSAL
Munro FerenczRussiaAnna Fali NEGOTIATION
Maria MarrierUnited KingdomAsiya Javayant QUALIFIED
Misaki RoysterGermanyBernardo Dominic NEGOTIATION
Aruna FigeroaGermanyAmy Elsner NEW
Jefferson SchemmerGermanyAnna Fali NEGOTIATION
Kaitlin OstroskyBrazilOnyama Limba PROPOSAL
Wickens NestleItalyOnyama Limba NEGOTIATION
Jennifer AmigonGermanyElwin Sharvill NEGOTIATION
Alejandro PerinBrazilStephen Shaw 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>