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
Ashley DoeFranceOnyama Limba NEW
Izzy GarufiGermanyAmy Elsner NEGOTIATION
Sinclair WaycottFranceStephen Shaw PROPOSAL
Ivar PaprockiJapanAmy Elsner QUALIFIED
Clifford RimGermanyStephen Shaw PROPOSAL
Julie StensethBrazilIvan Magalhaes RENEWAL
Kaitlin OstroskyFranceAmy Elsner QUALIFIED
Faith GillianSpainAsiya Javayant UNQUALIFIED
Maisha RulapaughFranceOnyama Limba NEGOTIATION
Jefferson SchemmerIndiaXuxue Feng QUALIFIED
Clifford RimRussiaOnyama Limba NEGOTIATION
Arvin AlbaresAustraliaAmy Elsner UNQUALIFIED
Mayumi KolmetzUnited KingdomAmy Elsner NEGOTIATION
Cody SaylorsGermanyIvan Magalhaes NEGOTIATION
Wickens NestleRussiaIvan Magalhaes NEW
Rodrigues CampainGermanyBernardo Dominic NEGOTIATION
Leja CaldareraBrazilXuxue Feng NEGOTIATION
Maisha RulapaughAustraliaBernardo Dominic QUALIFIED
Murillo MaletUnited KingdomOnyama Limba RENEWAL
Jones VocelkaUnited KingdomAsiya Javayant RENEWAL
Clifford RimFranceStephen Shaw QUALIFIED
Sinclair WaycottAustraliaElwin Sharvill RENEWAL
Faith GillianGermanyStephen Shaw RENEWAL
Mujtaba NickaIndiaIoni Bowcher UNQUALIFIED
Isabel BowleyIndiaIvan Magalhaes UNQUALIFIED
Francesco ShinkoUnited KingdomOnyama Limba NEW
Francesco ShinkoItalyOnyama Limba PROPOSAL
Darci PoquetteRussiaIvan Magalhaes PROPOSAL
Munro FerenczItalyOnyama Limba UNQUALIFIED
Darci PoquetteCanadaAnna Fali PROPOSAL
Claire TollnerUnited KingdomAnna Fali RENEWAL
Salvatore StockhamSpainXuxue Feng UNQUALIFIED
Faith GillianItalyXuxue Feng QUALIFIED
Nicolas IturbideArgentinaOnyama Limba PROPOSAL
Chavez BriddickGermanyElwin Sharvill NEGOTIATION
Maria MarrierArgentinaOnyama Limba UNQUALIFIED
Silvio SlusarskiCanadaStephen Shaw RENEWAL
Ivar PaprockiGermanyOnyama Limba NEGOTIATION
Cody SaylorsRussiaAnna Fali UNQUALIFIED
Jennifer AmigonBrazilBernardo Dominic RENEWAL
Smith GlickGermanyAnna Fali NEGOTIATION
Kadeem FlosiCanadaBernardo Dominic PROPOSAL
Juan WieserJapanIoni Bowcher NEW
Ricardo GauchoFranceAmy Elsner UNQUALIFIED
Francesco ShinkoItalyAnna Fali NEGOTIATION
Mayumi KolmetzItalyStephen Shaw UNQUALIFIED
James ButtIndiaIoni Bowcher NEW
Julie StensethSpainIoni Bowcher PROPOSAL
Leon OldroydBrazilIoni Bowcher NEGOTIATION
Cody SaylorsUnited KingdomBernardo Dominic NEW
Horizontal
NameCountryRepresentativeStatus
Mujtaba NickaAustraliaIvan Magalhaes NEW
Mujtaba NickaRussiaElwin Sharvill QUALIFIED
Clifford RimGermanyIoni Bowcher UNQUALIFIED
Ivar PaprockiAustraliaAsiya Javayant QUALIFIED
Stacey MacleadCanadaElwin Sharvill UNQUALIFIED
Antonio CaudyIndiaAmy Elsner NEW
Faith GillianJapanXuxue Feng RENEWAL
Julie StensethFranceBernardo Dominic NEW
Faith GillianBrazilAnna Fali RENEWAL
Johnson SergiFranceXuxue Feng QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maria MarrierUnited Kingdom2026-06-10Dorl, James J Esq NEW93Ioni Bowcher
1001Stacey MacleadArgentina2026-06-04Rousseaux, Michael Esq QUALIFIED22Stephen Shaw
1002Rodrigues CampainAustralia2026-06-09Feiner Bros PROPOSAL34Xuxue Feng
1003Jefferson SchemmerBrazil2026-06-19Buckley Miller Wright UNQUALIFIED47Xuxue Feng
1004Francesco ShinkoIndia2026-06-07Commercial Press PROPOSAL45Elwin Sharvill
1005Julie StensethRussia2026-05-30Chanay, Jeffrey A Esq PROPOSAL82Ivan Magalhaes
1006Aika InouyeRussia2026-05-25Printing Dimensions NEGOTIATION75Xuxue Feng
1007Leon OldroydBrazil2026-06-20Printing Dimensions NEGOTIATION57Ivan Magalhaes
1008Munro FerenczGermany2026-05-23Commercial Press PROPOSAL67Ioni Bowcher
1009Juan WieserIndia2026-06-16Rousseaux, Michael Esq NEW6Onyama Limba
1010Greenwood BologniaUnited Kingdom2026-06-16Chapman, Ross E Esq UNQUALIFIED26Ivan Magalhaes
1011Aditya KuskoFrance2026-05-29Rangoni Of Florence QUALIFIED87Ivan Magalhaes
1012Darci PoquetteBrazil2026-05-22Morlong Associates NEW17Xuxue Feng
1013Maria MarrierSpain2026-06-04Printing Dimensions RENEWAL60Ioni Bowcher
1014Ricardo GauchoSpain2026-06-20Morlong Associates RENEWAL84Onyama Limba
1015Smith GlickAustralia2026-05-28Benton, John B Jr UNQUALIFIED50Amy Elsner
1016Aika InouyeFrance2026-06-06Chanay, Jeffrey A Esq RENEWAL91Ivan Magalhaes
1017Maria MarrierFrance2026-06-07Commercial Press NEGOTIATION72Bernardo Dominic
1018James ButtIndia2026-05-26Printing Dimensions NEW30Stephen Shaw
1019Arvin AlbaresArgentina2026-06-18King, Christopher A Esq QUALIFIED10Amy Elsner
1020Chavez BriddickSpain2026-06-09Chapman, Ross E Esq NEGOTIATION74Asiya Javayant
1021Tony FollerSpain2026-05-22Rangoni Of Florence NEGOTIATION80Xuxue Feng
1022Julie StensethGermany2026-06-20Buckley Miller Wright PROPOSAL43Bernardo Dominic
1023Octavia MaletFrance2026-06-20Chapman, Ross E Esq RENEWAL50Xuxue Feng
1024Sinclair WaycottBrazil2026-06-07Printing Dimensions NEW81Anna Fali
1025Jefferson SchemmerSpain2026-06-14King, Christopher A Esq RENEWAL29Amy Elsner
1026Aika InouyeBrazil2026-06-05Printing Dimensions NEW42Stephen Shaw
1027Smith GlickCanada2026-05-25Chapman, Ross E Esq NEW21Ivan Magalhaes
1028Francesco ShinkoCanada2026-06-06Feltz Printing Service RENEWAL95Onyama Limba
1029Rodrigues CampainBrazil2026-06-05Benton, John B Jr QUALIFIED78Ioni Bowcher
1030Aditya KuskoUnited Kingdom2026-05-25Truhlar And Truhlar Attys QUALIFIED50Asiya Javayant
1031Maisha RulapaughCanada2026-05-23Rousseaux, Michael Esq QUALIFIED44Anna Fali
1032Stacey MacleadArgentina2026-06-11Printing Dimensions NEGOTIATION55Bernardo Dominic
1033Sinclair WaycottCanada2026-06-20Truhlar And Truhlar Attys PROPOSAL63Xuxue Feng
1034Mujtaba NickaBrazil2026-05-30Rangoni Of Florence UNQUALIFIED66Onyama Limba
1035Jones VocelkaItaly2026-06-01Buckley Miller Wright QUALIFIED81Amy Elsner
1036Isabel BowleyFrance2026-06-15Commercial Press UNQUALIFIED9Elwin Sharvill
1037Antonio CaudyRussia2026-06-14Rangoni Of Florence NEW26Anna Fali
1038Kaitlin OstroskyBrazil2026-05-27Benton, John B Jr PROPOSAL8Stephen Shaw
1039Antonio CaudyJapan2026-06-02Morlong Associates QUALIFIED79Asiya Javayant
1040Claire TollnerArgentina2026-06-14Morlong Associates RENEWAL46Amy Elsner
1041Aditya KuskoCanada2026-06-20Rousseaux, Michael Esq RENEWAL14Asiya Javayant
1042Julie StensethIndia2026-06-08Chanay, Jeffrey A Esq RENEWAL10Ioni Bowcher
1043Misaki RoysterFrance2026-06-14Feltz Printing Service UNQUALIFIED50Onyama Limba
1044Silvio SlusarskiArgentina2026-06-03Morlong Associates PROPOSAL44Stephen Shaw
1045Munro FerenczJapan2026-05-29Commercial Press NEGOTIATION22Asiya Javayant
1046Greenwood BologniaFrance2026-06-17Benton, John B Jr RENEWAL19Amy Elsner
1047Aruna FigeroaUnited Kingdom2026-06-19Printing Dimensions QUALIFIED7Stephen Shaw
1048Antonio CaudyBrazil2026-05-25Truhlar And Truhlar Attys UNQUALIFIED97Asiya Javayant
1049Munro FerenczBrazil2026-05-28Feltz Printing Service RENEWAL36Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Alejandro PerinAustraliaIoni Bowcher QUALIFIED
Faith GillianJapanAsiya Javayant QUALIFIED
Johnson SergiItalyOnyama Limba QUALIFIED
Kaitlin OstroskyCanadaIoni Bowcher NEGOTIATION
Leja CaldareraIndiaIoni Bowcher NEGOTIATION
Deepesh ChuiFranceStephen Shaw UNQUALIFIED
Rodrigues CampainAustraliaIoni Bowcher PROPOSAL
Darci PoquetteRussiaAnna Fali RENEWAL
Leon OldroydGermanyAmy Elsner RENEWAL
Salvatore StockhamArgentinaAnna Fali UNQUALIFIED
Claire TollnerArgentinaIoni Bowcher NEW
Darci PoquetteRussiaBernardo Dominic QUALIFIED
Claire TollnerGermanyAnna Fali PROPOSAL
Arvin AlbaresIndiaOnyama Limba QUALIFIED
Tony FollerGermanyXuxue Feng NEW
Emily WhobreyCanadaElwin Sharvill NEGOTIATION
Maisha RulapaughJapanOnyama Limba NEW
Adams MorascaGermanyAnna Fali UNQUALIFIED
Leja CaldareraUnited KingdomXuxue Feng RENEWAL
Adams MorascaFranceAnna Fali NEW
David DarakjyRussiaElwin Sharvill PROPOSAL
David DarakjySpainElwin Sharvill RENEWAL
Aruna FigeroaJapanIoni Bowcher PROPOSAL
Ashley DoeUnited KingdomIoni Bowcher RENEWAL
Ivar PaprockiJapanXuxue Feng QUALIFIED
Maria MarrierJapanElwin Sharvill QUALIFIED
Ricardo GauchoAustraliaIoni Bowcher UNQUALIFIED
Jeanfrancois VenereCanadaStephen Shaw UNQUALIFIED
Faith GillianAustraliaOnyama Limba QUALIFIED
Greenwood BologniaFranceIoni Bowcher QUALIFIED
Smith GlickIndiaElwin Sharvill NEGOTIATION
Jeanfrancois VenereArgentinaBernardo Dominic NEGOTIATION
Maria MarrierFranceOnyama Limba QUALIFIED
Smith GlickJapanElwin Sharvill RENEWAL
Morrow RutaJapanIvan Magalhaes NEW
Aditya KuskoItalyElwin Sharvill QUALIFIED
Murillo MaletUnited KingdomOnyama Limba QUALIFIED
Morrow RutaAustraliaStephen Shaw QUALIFIED
Leon OldroydIndiaAnna Fali UNQUALIFIED
Faith GillianArgentinaAmy Elsner UNQUALIFIED
Johnson SergiArgentinaAsiya Javayant NEGOTIATION
Cody SaylorsCanadaIoni Bowcher PROPOSAL
Jeanfrancois VenereJapanAmy Elsner PROPOSAL
James ButtSpainOnyama Limba PROPOSAL
Jeanfrancois VenereSpainBernardo Dominic RENEWAL
Aruna FigeroaIndiaXuxue Feng QUALIFIED
Maria MarrierArgentinaXuxue Feng RENEWAL
Leja CaldareraJapanAmy Elsner QUALIFIED
Tony FollerArgentinaIvan Magalhaes PROPOSAL
Jennifer AmigonGermanyElwin Sharvill RENEWAL
Frozen Columns
Name
Smith Glick
Octavia Malet
Kadeem Flosi
Aika Inouye
Mujtaba Nicka
Leon Oldroyd
Antonio Caudy
Tony Foller
Nicolas Iturbide
Smith Glick
Cody Saylors
Faith Gillian
Chavez Briddick
Greenwood Bolognia
Isabel Bowley
Izzy Garufi
Jefferson Schemmer
Julie Stenseth
Darci Poquette
Faith Gillian
Smith Glick
Francesco Shinko
Adams Morasca
Kaitlin Ostrosky
Jones Vocelka
Aika Inouye
Clifford Rim
Greenwood Bolognia
Maria Marrier
Greenwood Bolognia
Murillo Malet
Ricardo Gaucho
Misaki Royster
Costa Dilliard
Leon Oldroyd
Ashley Doe
Isabel Bowley
Arvin Albares
Misaki Royster
Aruna Figeroa
Mujtaba Nicka
Faith Gillian
Francesco Shinko
Ashley Doe
Emily Whobrey
Stacey Maclead
Sinclair Waycott
Alejandro Perin
Claire Tollner
Mujtaba Nicka
IdCountryDate
1000Japan2026-05-30
1001Australia2026-05-30
1002Italy2026-06-14
1003United Kingdom2026-05-25
1004Italy2026-05-29
1005Argentina2026-06-17
1006Japan2026-06-14
1007Spain2026-06-13
1008Brazil2026-06-20
1009Argentina2026-05-28
1010Italy2026-06-18
1011Spain2026-06-09
1012Argentina2026-06-03
1013France2026-06-08
1014Italy2026-06-02
1015Argentina2026-06-09
1016India2026-06-18
1017United Kingdom2026-05-28
1018Australia2026-06-07
1019Canada2026-06-17
1020United Kingdom2026-06-05
1021Spain2026-06-15
1022Brazil2026-06-02
1023Brazil2026-06-14
1024United Kingdom2026-06-18
1025Russia2026-06-14
1026France2026-06-14
1027Argentina2026-06-20
1028Japan2026-06-12
1029Spain2026-06-17
1030France2026-06-16
1031France2026-05-28
1032Italy2026-06-15
1033Germany2026-06-11
1034Canada2026-06-06
1035United Kingdom2026-06-13
1036Russia2026-06-01
1037Australia2026-05-25
1038France2026-06-09
1039Brazil2026-06-08
1040Germany2026-06-11
1041Japan2026-05-22
1042India2026-05-26
1043Japan2026-06-08
1044Japan2026-06-14
1045France2026-06-04
1046France2026-06-03
1047France2026-06-03
1048Germany2026-06-15
1049Australia2026-06-14

On-Demand Data

NameIdCountryDate
David Darakjy1000Spain2026-05-28
Julie Stenseth1001Canada2026-05-25
Alejandro Perin1002Argentina2026-06-01
Leon Oldroyd1003India2026-05-30
Jeanfrancois Venere1004Italy2026-05-26
Faith Gillian1005Japan2026-06-14
Ivar Paprocki1006Argentina2026-05-28
Nicolas Iturbide1007Russia2026-06-06
Antonio Caudy1008Germany2026-06-02
Aika Inouye1009Italy2026-06-14
Misaki Royster1010United Kingdom2026-06-16
Misaki Royster1011Russia2026-05-27
Sinclair Waycott1012France2026-05-29
Izzy Garufi1013Italy2026-06-14
Misaki Royster1014United Kingdom2026-05-22
Murillo Malet1015Brazil2026-06-09
Stacey Maclead1016United Kingdom2026-06-05
Claire Tollner1017France2026-05-25
Aika Inouye1018Spain2026-05-24
Murillo Malet1019Russia2026-06-12
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Claire TollnerBrazilAmy Elsner UNQUALIFIED
Octavia MaletAustraliaElwin Sharvill NEW
Rodrigues CampainArgentinaOnyama Limba PROPOSAL
Tony FollerAustraliaIoni Bowcher UNQUALIFIED
Francesco ShinkoBrazilIoni Bowcher PROPOSAL
Ashley DoeGermanyIvan Magalhaes NEGOTIATION
Leja CaldareraAustraliaStephen Shaw QUALIFIED
Francesco ShinkoArgentinaStephen Shaw RENEWAL
Izzy GarufiGermanyAsiya Javayant RENEWAL
James ButtItalyStephen Shaw RENEWAL
Wickens NestleSpainAsiya Javayant NEGOTIATION
Maisha RulapaughRussiaIvan Magalhaes RENEWAL
Aika InouyeUnited KingdomOnyama Limba NEW
Alejandro PerinBrazilAsiya Javayant NEGOTIATION
Rodrigues CampainCanadaAnna Fali PROPOSAL
Chavez BriddickRussiaIvan Magalhaes NEGOTIATION
Wickens NestleArgentinaAmy Elsner QUALIFIED
Ivar PaprockiRussiaOnyama Limba UNQUALIFIED
Octavia MaletBrazilElwin Sharvill NEGOTIATION
Silvio SlusarskiItalyIvan Magalhaes RENEWAL
Nicolas IturbideRussiaAnna Fali QUALIFIED
Faith GillianJapanBernardo Dominic RENEWAL
Deepesh ChuiFranceIoni Bowcher NEGOTIATION
Nicolas IturbideItalyElwin Sharvill RENEWAL
Aruna FigeroaFranceIvan Magalhaes UNQUALIFIED
Jeanfrancois VenereIndiaIvan Magalhaes QUALIFIED
Maria MarrierFranceAnna Fali NEGOTIATION
Jennifer AmigonBrazilAnna Fali NEGOTIATION
Ashley DoeFranceAmy Elsner NEGOTIATION
Isabel BowleyJapanOnyama Limba PROPOSAL
Deepesh ChuiItalyIoni Bowcher PROPOSAL
Claire TollnerBrazilIoni Bowcher NEGOTIATION
Greenwood BologniaFranceBernardo Dominic UNQUALIFIED
Octavia MaletItalyAmy Elsner RENEWAL
Deepesh ChuiBrazilIvan Magalhaes RENEWAL
Morrow RutaAustraliaBernardo Dominic NEW
Darci PoquetteRussiaAsiya Javayant NEGOTIATION
Johnson SergiFranceAmy Elsner UNQUALIFIED
Jennifer AmigonAustraliaOnyama Limba RENEWAL
James ButtItalyAsiya Javayant 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>