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
Julie StensethFranceBernardo Dominic NEW
Morrow RutaGermanyOnyama Limba NEGOTIATION
James ButtRussiaAnna Fali PROPOSAL
Leja CaldareraSpainAsiya Javayant PROPOSAL
Ivar PaprockiBrazilOnyama Limba NEGOTIATION
Isabel BowleyItalyBernardo Dominic QUALIFIED
Leja CaldareraGermanyIvan Magalhaes NEW
Silvio SlusarskiArgentinaIoni Bowcher NEW
Morrow RutaRussiaAmy Elsner NEW
Faith GillianGermanyAsiya Javayant UNQUALIFIED
Aditya KuskoRussiaXuxue Feng QUALIFIED
Rodrigues CampainJapanAnna Fali QUALIFIED
Claire TollnerJapanStephen Shaw NEW
Leon OldroydJapanAmy Elsner UNQUALIFIED
Jones VocelkaItalyIvan Magalhaes UNQUALIFIED
Kadeem FlosiRussiaAsiya Javayant NEW
Smith GlickUnited KingdomElwin Sharvill UNQUALIFIED
Leon OldroydBrazilIoni Bowcher RENEWAL
Sinclair WaycottFranceBernardo Dominic QUALIFIED
Emily WhobreyIndiaIvan Magalhaes NEW
Jones VocelkaArgentinaAmy Elsner RENEWAL
Sinclair WaycottIndiaAmy Elsner NEW
Costa DilliardRussiaXuxue Feng PROPOSAL
Silvio SlusarskiGermanyIoni Bowcher RENEWAL
Adams MorascaJapanIoni Bowcher NEGOTIATION
Munro FerenczUnited KingdomBernardo Dominic NEW
Jefferson SchemmerJapanAsiya Javayant RENEWAL
Sinclair WaycottItalyIoni Bowcher PROPOSAL
Alejandro PerinBrazilXuxue Feng QUALIFIED
Emily WhobreyItalyStephen Shaw PROPOSAL
David DarakjyAustraliaIvan Magalhaes NEGOTIATION
Murillo MaletCanadaAmy Elsner NEGOTIATION
Aditya KuskoUnited KingdomAsiya Javayant UNQUALIFIED
Antonio CaudyJapanElwin Sharvill PROPOSAL
Salvatore StockhamFranceAsiya Javayant RENEWAL
Morrow RutaUnited KingdomXuxue Feng NEW
Jones VocelkaUnited KingdomAnna Fali NEGOTIATION
Ricardo GauchoJapanAnna Fali NEGOTIATION
Faith GillianUnited KingdomBernardo Dominic QUALIFIED
Cody SaylorsJapanBernardo Dominic PROPOSAL
Chavez BriddickSpainIoni Bowcher QUALIFIED
Faith GillianRussiaIoni Bowcher PROPOSAL
Julie StensethRussiaStephen Shaw UNQUALIFIED
Antonio CaudyFranceAsiya Javayant NEGOTIATION
Wickens NestleFranceElwin Sharvill NEGOTIATION
James ButtAustraliaIoni Bowcher RENEWAL
Ashley DoeSpainElwin Sharvill RENEWAL
Kadeem FlosiJapanAnna Fali UNQUALIFIED
Ricardo GauchoSpainIoni Bowcher RENEWAL
Kaitlin OstroskyAustraliaOnyama Limba NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Darci PoquetteIndiaOnyama Limba UNQUALIFIED
Kadeem FlosiArgentinaStephen Shaw NEGOTIATION
Wickens NestleRussiaAmy Elsner NEW
Faith GillianFranceBernardo Dominic RENEWAL
Octavia MaletSpainXuxue Feng UNQUALIFIED
Maisha RulapaughRussiaAsiya Javayant PROPOSAL
James ButtArgentinaAnna Fali NEW
Claire TollnerRussiaIvan Magalhaes NEGOTIATION
Aditya KuskoCanadaXuxue Feng NEW
Greenwood BologniaAustraliaStephen Shaw RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ashley DoeUnited Kingdom2025-09-30Buckley Miller Wright PROPOSAL63Ivan Magalhaes
1001Johnson SergiUnited Kingdom2025-09-17Feltz Printing Service RENEWAL71Elwin Sharvill
1002Jones VocelkaAustralia2025-09-14Buckley Miller Wright RENEWAL35Asiya Javayant
1003Clifford RimItaly2025-09-22Chapman, Ross E Esq RENEWAL83Asiya Javayant
1004Isabel BowleyArgentina2025-10-01Feltz Printing Service UNQUALIFIED23Asiya Javayant
1005Jennifer AmigonAustralia2025-09-19Feltz Printing Service PROPOSAL97Asiya Javayant
1006Aika InouyeGermany2025-10-02Printing Dimensions QUALIFIED76Bernardo Dominic
1007Sinclair WaycottUnited Kingdom2025-09-13Commercial Press NEGOTIATION66Anna Fali
1008Francesco ShinkoUnited Kingdom2025-09-16Dorl, James J Esq NEGOTIATION58Xuxue Feng
1009Chavez BriddickAustralia2025-09-25Rousseaux, Michael Esq NEGOTIATION75Elwin Sharvill
1010Chavez BriddickSpain2025-09-30Chanay, Jeffrey A Esq RENEWAL76Stephen Shaw
1011Claire TollnerJapan2025-09-10King, Christopher A Esq NEGOTIATION82Anna Fali
1012Deepesh ChuiGermany2025-09-22Chapman, Ross E Esq NEGOTIATION41Xuxue Feng
1013Johnson SergiItaly2025-09-28Dorl, James J Esq NEGOTIATION67Anna Fali
1014Leon OldroydItaly2025-09-24Buckley Miller Wright PROPOSAL25Ivan Magalhaes
1015Adams MorascaItaly2025-10-01King, Christopher A Esq RENEWAL46Anna Fali
1016Octavia MaletArgentina2025-09-25Morlong Associates PROPOSAL36Bernardo Dominic
1017Smith GlickGermany2025-09-29Morlong Associates QUALIFIED68Anna Fali
1018Tony FollerRussia2025-09-16Feiner Bros UNQUALIFIED9Anna Fali
1019Aruna FigeroaIndia2025-09-30Feltz Printing Service RENEWAL57Elwin Sharvill
1020Silvio SlusarskiBrazil2025-09-28Printing Dimensions QUALIFIED3Stephen Shaw
1021Faith GillianIndia2025-09-09King, Christopher A Esq NEGOTIATION66Xuxue Feng
1022Leon OldroydUnited Kingdom2025-09-19Morlong Associates QUALIFIED38Ivan Magalhaes
1023Sinclair WaycottCanada2025-09-05Feiner Bros RENEWAL42Anna Fali
1024Salvatore StockhamUnited Kingdom2025-09-22Feiner Bros NEGOTIATION8Stephen Shaw
1025Maisha RulapaughFrance2025-09-20Truhlar And Truhlar Attys NEW94Ivan Magalhaes
1026Greenwood BologniaBrazil2025-09-15Chapman, Ross E Esq QUALIFIED68Xuxue Feng
1027Ivar PaprockiIndia2025-09-23Chapman, Ross E Esq NEGOTIATION62Asiya Javayant
1028Aruna FigeroaCanada2025-09-08Feltz Printing Service QUALIFIED42Bernardo Dominic
1029Deepesh ChuiAustralia2025-09-30Dorl, James J Esq NEGOTIATION54Ioni Bowcher
1030Faith GillianItaly2025-09-26Chapman, Ross E Esq PROPOSAL24Ivan Magalhaes
1031James ButtCanada2025-09-20Feiner Bros NEW38Bernardo Dominic
1032Kaitlin OstroskyUnited Kingdom2025-09-10Printing Dimensions UNQUALIFIED23Anna Fali
1033Sinclair WaycottIndia2025-09-10Buckley Miller Wright NEW11Amy Elsner
1034Leja CaldareraBrazil2025-09-16Dorl, James J Esq NEW4Onyama Limba
1035Kaitlin OstroskyFrance2025-09-14Feiner Bros PROPOSAL65Bernardo Dominic
1036Costa DilliardUnited Kingdom2025-09-27Feiner Bros UNQUALIFIED41Elwin Sharvill
1037Sinclair WaycottBrazil2025-09-14Chanay, Jeffrey A Esq UNQUALIFIED0Onyama Limba
1038Julie StensethCanada2025-09-14Morlong Associates NEGOTIATION82Asiya Javayant
1039James ButtFrance2025-10-01Chanay, Jeffrey A Esq QUALIFIED25Anna Fali
1040James ButtRussia2025-09-08Morlong Associates PROPOSAL9Bernardo Dominic
1041Adams MorascaSpain2025-09-08Morlong Associates UNQUALIFIED48Amy Elsner
1042Costa DilliardJapan2025-10-01Chemel, James L Cpa NEW66Elwin Sharvill
1043Nicolas IturbideIndia2025-09-28Chemel, James L Cpa RENEWAL51Amy Elsner
1044Silvio SlusarskiJapan2025-09-06Chanay, Jeffrey A Esq UNQUALIFIED5Stephen Shaw
1045Greenwood BologniaBrazil2025-09-11Rousseaux, Michael Esq PROPOSAL79Ioni Bowcher
1046Julie StensethBrazil2025-09-28Dorl, James J Esq RENEWAL93Elwin Sharvill
1047Wickens NestleRussia2025-09-24Buckley Miller Wright UNQUALIFIED67Onyama Limba
1048Mujtaba NickaJapan2025-09-28Feiner Bros NEW34Anna Fali
1049Leon OldroydFrance2025-09-11Benton, John B Jr NEGOTIATION61Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Juan WieserArgentinaAsiya Javayant UNQUALIFIED
Cody SaylorsSpainOnyama Limba NEGOTIATION
Adams MorascaSpainXuxue Feng RENEWAL
Jennifer AmigonAustraliaAmy Elsner UNQUALIFIED
Deepesh ChuiGermanyOnyama Limba QUALIFIED
Aika InouyeUnited KingdomIvan Magalhaes RENEWAL
Maisha RulapaughBrazilAnna Fali UNQUALIFIED
Aruna FigeroaJapanAsiya Javayant QUALIFIED
Ashley DoeJapanAmy Elsner UNQUALIFIED
Ricardo GauchoFranceIoni Bowcher NEGOTIATION
Octavia MaletItalyOnyama Limba UNQUALIFIED
Darci PoquetteCanadaOnyama Limba PROPOSAL
Cody SaylorsCanadaIoni Bowcher RENEWAL
Adams MorascaSpainXuxue Feng NEGOTIATION
Murillo MaletGermanyXuxue Feng NEW
Maisha RulapaughFranceAmy Elsner QUALIFIED
Murillo MaletFranceIvan Magalhaes PROPOSAL
Salvatore StockhamJapanBernardo Dominic NEW
Adams MorascaGermanyIoni Bowcher QUALIFIED
Jennifer AmigonUnited KingdomBernardo Dominic QUALIFIED
Aruna FigeroaRussiaBernardo Dominic PROPOSAL
Rodrigues CampainArgentinaIoni Bowcher NEW
Tony FollerJapanStephen Shaw PROPOSAL
Izzy GarufiAustraliaIoni Bowcher RENEWAL
Aruna FigeroaIndiaIoni Bowcher RENEWAL
Adams MorascaAustraliaIvan Magalhaes RENEWAL
Darci PoquetteGermanyElwin Sharvill QUALIFIED
Francesco ShinkoUnited KingdomStephen Shaw UNQUALIFIED
Antonio CaudySpainOnyama Limba NEW
Mujtaba NickaRussiaXuxue Feng RENEWAL
Octavia MaletGermanyAnna Fali UNQUALIFIED
David DarakjyIndiaElwin Sharvill QUALIFIED
Jefferson SchemmerGermanyElwin Sharvill PROPOSAL
Mayumi KolmetzAustraliaElwin Sharvill RENEWAL
Deepesh ChuiRussiaAsiya Javayant RENEWAL
Emily WhobreyFranceIvan Magalhaes NEGOTIATION
Mujtaba NickaCanadaIoni Bowcher NEW
Greenwood BologniaFranceOnyama Limba RENEWAL
Faith GillianArgentinaIoni Bowcher UNQUALIFIED
Aika InouyeFranceIvan Magalhaes NEGOTIATION
Arvin AlbaresRussiaXuxue Feng QUALIFIED
Sinclair WaycottCanadaStephen Shaw NEW
Ivar PaprockiRussiaStephen Shaw NEW
Munro FerenczIndiaAmy Elsner NEW
Octavia MaletIndiaIvan Magalhaes QUALIFIED
Nicolas IturbideSpainAmy Elsner RENEWAL
Claire TollnerFranceAsiya Javayant QUALIFIED
David DarakjyArgentinaXuxue Feng QUALIFIED
Leon OldroydAustraliaIoni Bowcher UNQUALIFIED
Maria MarrierJapanIvan Magalhaes UNQUALIFIED
Frozen Columns
Name
Maisha Rulapaugh
Claire Tollner
Murillo Malet
Silvio Slusarski
Cody Saylors
Sinclair Waycott
Deepesh Chui
Salvatore Stockham
Leon Oldroyd
Juan Wieser
Greenwood Bolognia
Jefferson Schemmer
Chavez Briddick
Julie Stenseth
Silvio Slusarski
Stacey Maclead
Adams Morasca
Rodrigues Campain
Adams Morasca
Munro Ferencz
Faith Gillian
Octavia Malet
Ricardo Gaucho
Arvin Albares
Kaitlin Ostrosky
Cody Saylors
Jefferson Schemmer
Costa Dilliard
Claire Tollner
Juan Wieser
Chavez Briddick
Smith Glick
Maria Marrier
Aditya Kusko
Greenwood Bolognia
Aruna Figeroa
Cody Saylors
Izzy Garufi
Faith Gillian
Kadeem Flosi
Claire Tollner
Aika Inouye
Ashley Doe
Izzy Garufi
Smith Glick
Kaitlin Ostrosky
James Butt
Jeanfrancois Venere
Aruna Figeroa
Jennifer Amigon
IdCountryDate
1000Japan2025-09-12
1001Argentina2025-09-23
1002Russia2025-10-02
1003India2025-09-29
1004Canada2025-09-07
1005France2025-09-24
1006France2025-09-24
1007France2025-09-19
1008Brazil2025-09-17
1009Spain2025-09-10
1010India2025-09-18
1011Canada2025-10-03
1012Australia2025-09-30
1013Spain2025-10-03
1014Russia2025-10-01
1015Germany2025-09-16
1016Japan2025-09-09
1017Argentina2025-09-23
1018Italy2025-09-21
1019Canada2025-09-11
1020Spain2025-09-07
1021Brazil2025-09-09
1022Spain2025-09-25
1023Germany2025-10-03
1024Argentina2025-09-10
1025Russia2025-09-10
1026Australia2025-09-21
1027Japan2025-09-22
1028Brazil2025-09-21
1029Canada2025-10-01
1030Italy2025-09-25
1031Italy2025-09-10
1032Japan2025-09-15
1033Italy2025-09-09
1034France2025-10-01
1035India2025-09-07
1036Italy2025-09-18
1037Germany2025-09-07
1038Australia2025-09-30
1039Brazil2025-09-19
1040Brazil2025-09-09
1041Russia2025-09-27
1042Brazil2025-09-18
1043France2025-09-21
1044Spain2025-09-20
1045Japan2025-09-05
1046Japan2025-09-19
1047Germany2025-10-03
1048Australia2025-09-09
1049Canada2025-09-21

On-Demand Data

NameIdCountryDate
Chavez Briddick1000Spain2025-09-08
David Darakjy1001Spain2025-09-08
Julie Stenseth1002Germany2025-09-07
Wickens Nestle1003India2025-09-19
Jeanfrancois Venere1004Italy2025-09-27
Izzy Garufi1005Italy2025-09-06
Aditya Kusko1006Canada2025-09-20
Mayumi Kolmetz1007Germany2025-09-08
Aruna Figeroa1008Spain2025-09-09
Jones Vocelka1009Australia2025-09-29
Antonio Caudy1010Australia2025-09-11
Aruna Figeroa1011Germany2025-09-06
Aditya Kusko1012Germany2025-10-03
Deepesh Chui1013Russia2025-09-25
Jeanfrancois Venere1014Italy2025-09-12
Maria Marrier1015Canada2025-10-03
Arvin Albares1016United Kingdom2025-09-13
Claire Tollner1017Spain2025-09-18
Julie Stenseth1018United Kingdom2025-09-21
Clifford Rim1019Argentina2025-09-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Costa DilliardAustraliaAsiya Javayant QUALIFIED
Jennifer AmigonRussiaBernardo Dominic RENEWAL
Jennifer AmigonItalyAnna Fali QUALIFIED
Aruna FigeroaArgentinaBernardo Dominic UNQUALIFIED
Emily WhobreyUnited KingdomStephen Shaw PROPOSAL
Emily WhobreyUnited KingdomAsiya Javayant PROPOSAL
Ashley DoeArgentinaXuxue Feng UNQUALIFIED
Maisha RulapaughRussiaStephen Shaw PROPOSAL
James ButtRussiaAnna Fali RENEWAL
Johnson SergiUnited KingdomOnyama Limba PROPOSAL
Francesco ShinkoIndiaIoni Bowcher NEGOTIATION
Julie StensethBrazilAsiya Javayant NEGOTIATION
Leja CaldareraRussiaAmy Elsner QUALIFIED
Chavez BriddickJapanIvan Magalhaes PROPOSAL
Izzy GarufiIndiaAsiya Javayant NEW
Salvatore StockhamAustraliaStephen Shaw PROPOSAL
Juan WieserCanadaIvan Magalhaes PROPOSAL
Maria MarrierIndiaOnyama Limba QUALIFIED
Kaitlin OstroskyFranceStephen Shaw UNQUALIFIED
Salvatore StockhamIndiaIvan Magalhaes QUALIFIED
Isabel BowleySpainIoni Bowcher RENEWAL
Adams MorascaCanadaIvan Magalhaes NEW
Maria MarrierArgentinaIoni Bowcher QUALIFIED
Faith GillianGermanyIoni Bowcher QUALIFIED
Leon OldroydFranceXuxue Feng NEGOTIATION
Claire TollnerRussiaIvan Magalhaes UNQUALIFIED
Cody SaylorsIndiaAnna Fali RENEWAL
Izzy GarufiSpainIvan Magalhaes PROPOSAL
Aditya KuskoFranceIoni Bowcher RENEWAL
Tony FollerSpainIvan Magalhaes QUALIFIED
Leon OldroydArgentinaBernardo Dominic RENEWAL
Francesco ShinkoCanadaAnna Fali RENEWAL
Munro FerenczBrazilElwin Sharvill QUALIFIED
Greenwood BologniaFranceAsiya Javayant NEGOTIATION
Morrow RutaItalyBernardo Dominic UNQUALIFIED
Clifford RimFranceIoni Bowcher NEGOTIATION
Sinclair WaycottGermanyIvan Magalhaes UNQUALIFIED
Adams MorascaFranceStephen Shaw RENEWAL
Wickens NestleGermanyElwin Sharvill PROPOSAL
Emily WhobreyArgentinaAnna Fali RENEWAL

<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>