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
Mujtaba NickaFranceAmy Elsner UNQUALIFIED
Jennifer AmigonIndiaOnyama Limba NEGOTIATION
Nicolas IturbideSpainAsiya Javayant NEW
Clifford RimArgentinaIvan Magalhaes QUALIFIED
Jeanfrancois VenereArgentinaAsiya Javayant UNQUALIFIED
Aruna FigeroaItalyStephen Shaw RENEWAL
Adams MorascaAustraliaIoni Bowcher RENEWAL
Mayumi KolmetzGermanyAsiya Javayant UNQUALIFIED
Sinclair WaycottJapanXuxue Feng UNQUALIFIED
Isabel BowleyAustraliaAmy Elsner NEGOTIATION
David DarakjyGermanyBernardo Dominic RENEWAL
Mayumi KolmetzCanadaOnyama Limba RENEWAL
Mujtaba NickaBrazilIoni Bowcher NEGOTIATION
Stacey MacleadJapanElwin Sharvill UNQUALIFIED
Nicolas IturbideUnited KingdomIvan Magalhaes PROPOSAL
Ricardo GauchoItalyXuxue Feng UNQUALIFIED
Wickens NestleSpainIoni Bowcher NEW
Smith GlickUnited KingdomBernardo Dominic QUALIFIED
Julie StensethFranceStephen Shaw RENEWAL
Izzy GarufiBrazilIoni Bowcher NEW
Murillo MaletAustraliaIoni Bowcher RENEWAL
Kadeem FlosiUnited KingdomBernardo Dominic QUALIFIED
Leon OldroydBrazilIoni Bowcher NEGOTIATION
Salvatore StockhamSpainAsiya Javayant QUALIFIED
Aika InouyeJapanStephen Shaw PROPOSAL
Kadeem FlosiUnited KingdomIoni Bowcher NEW
Mujtaba NickaBrazilIoni Bowcher PROPOSAL
Aruna FigeroaJapanOnyama Limba PROPOSAL
Octavia MaletAustraliaXuxue Feng PROPOSAL
Izzy GarufiRussiaIvan Magalhaes NEGOTIATION
Adams MorascaUnited KingdomIoni Bowcher QUALIFIED
Johnson SergiCanadaIvan Magalhaes PROPOSAL
Misaki RoysterAustraliaIoni Bowcher RENEWAL
Murillo MaletBrazilIvan Magalhaes QUALIFIED
Aika InouyeItalyOnyama Limba UNQUALIFIED
Aditya KuskoArgentinaAmy Elsner NEGOTIATION
Jones VocelkaGermanyXuxue Feng NEW
James ButtBrazilElwin Sharvill RENEWAL
James ButtUnited KingdomIvan Magalhaes NEGOTIATION
Murillo MaletFranceOnyama Limba PROPOSAL
Tony FollerFranceXuxue Feng UNQUALIFIED
Munro FerenczAustraliaStephen Shaw NEW
Aditya KuskoIndiaBernardo Dominic UNQUALIFIED
Silvio SlusarskiCanadaIoni Bowcher RENEWAL
Faith GillianIndiaIvan Magalhaes UNQUALIFIED
Nicolas IturbideUnited KingdomXuxue Feng NEW
Misaki RoysterGermanyOnyama Limba NEGOTIATION
Morrow RutaIndiaXuxue Feng UNQUALIFIED
Maisha RulapaughJapanAsiya Javayant QUALIFIED
David DarakjyAustraliaStephen Shaw PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Wickens NestleGermanyOnyama Limba UNQUALIFIED
Alejandro PerinRussiaElwin Sharvill PROPOSAL
Izzy GarufiCanadaIoni Bowcher PROPOSAL
Rodrigues CampainIndiaElwin Sharvill PROPOSAL
Greenwood BologniaFranceAsiya Javayant NEGOTIATION
Maria MarrierRussiaAsiya Javayant QUALIFIED
Murillo MaletSpainAsiya Javayant PROPOSAL
Juan WieserBrazilAsiya Javayant QUALIFIED
Mayumi KolmetzItalyStephen Shaw PROPOSAL
Kadeem FlosiIndiaAnna Fali NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ricardo GauchoArgentina2026-05-12Feiner Bros NEW82Xuxue Feng
1001Tony FollerAustralia2026-05-06Benton, John B Jr NEGOTIATION57Xuxue Feng
1002Antonio CaudyFrance2026-05-08Rangoni Of Florence NEGOTIATION74Ioni Bowcher
1003Faith GillianAustralia2026-05-02King, Christopher A Esq PROPOSAL1Onyama Limba
1004Ricardo GauchoSpain2026-04-18Feiner Bros RENEWAL24Onyama Limba
1005Silvio SlusarskiAustralia2026-04-22Printing Dimensions QUALIFIED47Ioni Bowcher
1006Arvin AlbaresFrance2026-05-08Dorl, James J Esq UNQUALIFIED34Ioni Bowcher
1007Aika InouyeGermany2026-05-04Truhlar And Truhlar Attys NEGOTIATION37Onyama Limba
1008Aditya KuskoAustralia2026-05-05Printing Dimensions NEW11Elwin Sharvill
1009Nicolas IturbideFrance2026-05-10Dorl, James J Esq NEW5Xuxue Feng
1010Murillo MaletCanada2026-05-07Rousseaux, Michael Esq RENEWAL11Amy Elsner
1011Silvio SlusarskiSpain2026-05-14Chapman, Ross E Esq NEGOTIATION24Xuxue Feng
1012Ivar PaprockiFrance2026-04-20Feiner Bros NEW52Onyama Limba
1013Deepesh ChuiUnited Kingdom2026-05-11Rangoni Of Florence NEW24Asiya Javayant
1014Silvio SlusarskiGermany2026-05-06Rousseaux, Michael Esq UNQUALIFIED72Onyama Limba
1015Tony FollerArgentina2026-04-20Truhlar And Truhlar Attys NEW91Stephen Shaw
1016Claire TollnerItaly2026-05-12Buckley Miller Wright NEGOTIATION63Anna Fali
1017Faith GillianItaly2026-04-16Chapman, Ross E Esq UNQUALIFIED19Stephen Shaw
1018Darci PoquetteSpain2026-04-20Commercial Press RENEWAL67Stephen Shaw
1019Costa DilliardRussia2026-04-26Dorl, James J Esq PROPOSAL31Xuxue Feng
1020Arvin AlbaresArgentina2026-04-22Benton, John B Jr PROPOSAL86Stephen Shaw
1021Sinclair WaycottBrazil2026-04-24Feltz Printing Service PROPOSAL37Asiya Javayant
1022Julie StensethJapan2026-05-14Feiner Bros NEGOTIATION34Ivan Magalhaes
1023Isabel BowleyIndia2026-05-08Buckley Miller Wright PROPOSAL50Stephen Shaw
1024Claire TollnerUnited Kingdom2026-05-12Morlong Associates QUALIFIED2Onyama Limba
1025Morrow RutaItaly2026-04-15Chemel, James L Cpa RENEWAL17Ioni Bowcher
1026Aditya KuskoIndia2026-05-01Benton, John B Jr UNQUALIFIED5Ivan Magalhaes
1027Greenwood BologniaBrazil2026-04-16Buckley Miller Wright NEGOTIATION42Asiya Javayant
1028Jennifer AmigonRussia2026-04-25Truhlar And Truhlar Attys NEW44Anna Fali
1029Arvin AlbaresUnited Kingdom2026-05-04Truhlar And Truhlar Attys UNQUALIFIED58Elwin Sharvill
1030James ButtFrance2026-05-14Chanay, Jeffrey A Esq NEW67Ioni Bowcher
1031Murillo MaletRussia2026-05-05Dorl, James J Esq UNQUALIFIED93Ivan Magalhaes
1032Jones VocelkaJapan2026-04-19Morlong Associates NEGOTIATION72Xuxue Feng
1033Francesco ShinkoJapan2026-05-05King, Christopher A Esq PROPOSAL65Anna Fali
1034Kadeem FlosiGermany2026-04-27Buckley Miller Wright NEGOTIATION4Amy Elsner
1035Darci PoquetteFrance2026-05-09Chanay, Jeffrey A Esq NEW26Xuxue Feng
1036Kadeem FlosiRussia2026-04-27Printing Dimensions RENEWAL42Ivan Magalhaes
1037Mayumi KolmetzCanada2026-04-15Rangoni Of Florence NEGOTIATION20Ioni Bowcher
1038Stacey MacleadBrazil2026-05-07Feltz Printing Service PROPOSAL11Stephen Shaw
1039Izzy GarufiJapan2026-05-13Truhlar And Truhlar Attys NEW30Ioni Bowcher
1040Smith GlickItaly2026-04-18Chapman, Ross E Esq NEW21Elwin Sharvill
1041Jefferson SchemmerBrazil2026-05-13Feltz Printing Service NEGOTIATION54Ivan Magalhaes
1042Ivar PaprockiItaly2026-04-18Buckley Miller Wright NEW7Bernardo Dominic
1043Emily WhobreyGermany2026-04-18Benton, John B Jr NEW7Onyama Limba
1044Faith GillianRussia2026-04-23Commercial Press NEW22Xuxue Feng
1045Juan WieserSpain2026-04-23Printing Dimensions PROPOSAL4Elwin Sharvill
1046Mayumi KolmetzAustralia2026-04-23Buckley Miller Wright RENEWAL79Asiya Javayant
1047Salvatore StockhamCanada2026-04-26Rousseaux, Michael Esq NEGOTIATION37Asiya Javayant
1048Izzy GarufiAustralia2026-04-26Feltz Printing Service RENEWAL16Bernardo Dominic
1049Tony FollerRussia2026-04-19Commercial Press NEGOTIATION16Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Nicolas IturbideFranceStephen Shaw NEGOTIATION
Isabel BowleyArgentinaAsiya Javayant NEGOTIATION
Emily WhobreyGermanyAnna Fali RENEWAL
Darci PoquetteSpainIvan Magalhaes QUALIFIED
Isabel BowleyCanadaElwin Sharvill PROPOSAL
David DarakjySpainOnyama Limba PROPOSAL
David DarakjyRussiaElwin Sharvill NEGOTIATION
Jennifer AmigonItalyIvan Magalhaes UNQUALIFIED
Jeanfrancois VenereBrazilIvan Magalhaes NEW
Costa DilliardSpainBernardo Dominic NEGOTIATION
Isabel BowleyIndiaIvan Magalhaes UNQUALIFIED
Sinclair WaycottGermanyAmy Elsner NEW
Jennifer AmigonItalyXuxue Feng PROPOSAL
Tony FollerJapanXuxue Feng NEW
David DarakjyGermanyIvan Magalhaes QUALIFIED
James ButtFranceBernardo Dominic RENEWAL
Ashley DoeItalyIvan Magalhaes NEW
Jones VocelkaAustraliaAmy Elsner NEW
Juan WieserFranceAnna Fali RENEWAL
Isabel BowleyRussiaIoni Bowcher NEW
Cody SaylorsUnited KingdomOnyama Limba UNQUALIFIED
David DarakjyGermanyAmy Elsner RENEWAL
Antonio CaudyCanadaIoni Bowcher QUALIFIED
Leon OldroydCanadaOnyama Limba RENEWAL
Costa DilliardItalyOnyama Limba RENEWAL
Clifford RimCanadaAnna Fali NEGOTIATION
Julie StensethAustraliaStephen Shaw QUALIFIED
Salvatore StockhamGermanyIoni Bowcher NEGOTIATION
Jefferson SchemmerCanadaElwin Sharvill NEGOTIATION
Darci PoquetteGermanyOnyama Limba NEGOTIATION
Antonio CaudyAustraliaAnna Fali QUALIFIED
Maria MarrierArgentinaAnna Fali QUALIFIED
Kadeem FlosiIndiaBernardo Dominic RENEWAL
Murillo MaletBrazilIoni Bowcher QUALIFIED
Juan WieserSpainIoni Bowcher QUALIFIED
Kadeem FlosiCanadaOnyama Limba UNQUALIFIED
Antonio CaudyJapanIoni Bowcher NEGOTIATION
Francesco ShinkoAustraliaAnna Fali NEW
Ricardo GauchoUnited KingdomAsiya Javayant RENEWAL
Rodrigues CampainItalyStephen Shaw PROPOSAL
Costa DilliardJapanXuxue Feng NEGOTIATION
David DarakjyBrazilAmy Elsner QUALIFIED
David DarakjyAustraliaBernardo Dominic RENEWAL
Maria MarrierItalyIvan Magalhaes QUALIFIED
Mujtaba NickaArgentinaStephen Shaw RENEWAL
Greenwood BologniaFranceBernardo Dominic PROPOSAL
Silvio SlusarskiUnited KingdomAnna Fali UNQUALIFIED
Maisha RulapaughRussiaAsiya Javayant NEW
Sinclair WaycottBrazilOnyama Limba PROPOSAL
Arvin AlbaresIndiaStephen Shaw NEGOTIATION
Frozen Columns
Name
Francesco Shinko
Jefferson Schemmer
Kaitlin Ostrosky
Adams Morasca
Ivar Paprocki
Leja Caldarera
Emily Whobrey
Mayumi Kolmetz
Jeanfrancois Venere
Nicolas Iturbide
Maisha Rulapaugh
Leja Caldarera
Izzy Garufi
Kaitlin Ostrosky
Cody Saylors
Aika Inouye
Claire Tollner
Jennifer Amigon
Aruna Figeroa
Adams Morasca
Jefferson Schemmer
Costa Dilliard
Adams Morasca
Salvatore Stockham
Aruna Figeroa
Antonio Caudy
Kadeem Flosi
Arvin Albares
Cody Saylors
Aika Inouye
Izzy Garufi
Clifford Rim
Leon Oldroyd
Arvin Albares
David Darakjy
Aika Inouye
Aruna Figeroa
Darci Poquette
Aditya Kusko
Maria Marrier
Aika Inouye
Emily Whobrey
Juan Wieser
Isabel Bowley
Isabel Bowley
Aruna Figeroa
Kadeem Flosi
Maisha Rulapaugh
Wickens Nestle
Murillo Malet
IdCountryDate
1000Spain2026-04-24
1001Russia2026-04-25
1002Brazil2026-04-26
1003Argentina2026-05-13
1004Canada2026-04-15
1005France2026-05-12
1006United Kingdom2026-05-02
1007India2026-04-18
1008Spain2026-04-19
1009India2026-05-09
1010France2026-04-28
1011Argentina2026-04-21
1012Russia2026-04-25
1013Spain2026-04-16
1014Germany2026-04-20
1015Brazil2026-04-25
1016Spain2026-04-19
1017Argentina2026-05-14
1018Russia2026-04-30
1019Brazil2026-04-26
1020Canada2026-05-11
1021Germany2026-05-06
1022Argentina2026-05-09
1023Argentina2026-04-30
1024Italy2026-04-19
1025Italy2026-05-11
1026Australia2026-05-14
1027Canada2026-05-05
1028Germany2026-04-24
1029Japan2026-05-13
1030Germany2026-05-09
1031Argentina2026-05-02
1032Russia2026-04-15
1033France2026-05-02
1034Germany2026-04-25
1035United Kingdom2026-04-26
1036Argentina2026-04-15
1037France2026-05-01
1038Russia2026-05-12
1039France2026-04-24
1040Canada2026-05-08
1041Brazil2026-04-16
1042Australia2026-05-14
1043France2026-04-25
1044Germany2026-05-13
1045Brazil2026-05-12
1046Canada2026-05-13
1047Germany2026-04-21
1048Italy2026-04-26
1049Argentina2026-05-10

On-Demand Data

NameIdCountryDate
Wickens Nestle1000United Kingdom2026-05-04
Francesco Shinko1001Germany2026-04-24
Ricardo Gaucho1002Brazil2026-04-19
Salvatore Stockham1003Germany2026-04-23
Francesco Shinko1004India2026-05-14
Salvatore Stockham1005India2026-04-19
Ricardo Gaucho1006Australia2026-04-23
Jeanfrancois Venere1007Spain2026-04-25
Silvio Slusarski1008Brazil2026-04-23
Salvatore Stockham1009Germany2026-04-15
Octavia Malet1010United Kingdom2026-04-26
Clifford Rim1011India2026-04-30
Rodrigues Campain1012Canada2026-04-20
Darci Poquette1013United Kingdom2026-04-22
Octavia Malet1014Brazil2026-05-13
Sinclair Waycott1015Argentina2026-04-21
Cody Saylors1016Italy2026-04-27
Munro Ferencz1017Germany2026-05-01
Aika Inouye1018Australia2026-05-01
Silvio Slusarski1019India2026-04-22
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leja CaldareraSpainStephen Shaw QUALIFIED
Jennifer AmigonArgentinaIvan Magalhaes NEW
Alejandro PerinAustraliaAsiya Javayant RENEWAL
Claire TollnerAustraliaElwin Sharvill QUALIFIED
David DarakjyArgentinaIvan Magalhaes UNQUALIFIED
Deepesh ChuiJapanStephen Shaw NEW
Murillo MaletUnited KingdomXuxue Feng RENEWAL
Deepesh ChuiRussiaOnyama Limba QUALIFIED
Aruna FigeroaRussiaBernardo Dominic NEW
Juan WieserCanadaIoni Bowcher UNQUALIFIED
Rodrigues CampainSpainElwin Sharvill QUALIFIED
Misaki RoysterSpainStephen Shaw PROPOSAL
Aika InouyeGermanyIoni Bowcher NEW
David DarakjyItalyBernardo Dominic NEGOTIATION
Darci PoquetteFranceXuxue Feng RENEWAL
Arvin AlbaresArgentinaAnna Fali QUALIFIED
Chavez BriddickBrazilBernardo Dominic RENEWAL
Deepesh ChuiItalyIvan Magalhaes UNQUALIFIED
Morrow RutaJapanAmy Elsner NEGOTIATION
Ivar PaprockiArgentinaIoni Bowcher RENEWAL
Jones VocelkaJapanAsiya Javayant NEW
Faith GillianGermanyAmy Elsner NEW
David DarakjyFranceXuxue Feng RENEWAL
Jeanfrancois VenereItalyAnna Fali UNQUALIFIED
Mujtaba NickaRussiaAsiya Javayant UNQUALIFIED
Johnson SergiUnited KingdomAnna Fali RENEWAL
Octavia MaletItalyIoni Bowcher RENEWAL
Silvio SlusarskiFranceOnyama Limba QUALIFIED
Darci PoquetteCanadaXuxue Feng QUALIFIED
Kadeem FlosiItalyBernardo Dominic NEW
Costa DilliardGermanyAmy Elsner RENEWAL
Kadeem FlosiArgentinaBernardo Dominic NEW
James ButtJapanAnna Fali NEW
Francesco ShinkoJapanAmy Elsner NEW
Francesco ShinkoItalyIoni Bowcher NEGOTIATION
Jones VocelkaCanadaOnyama Limba QUALIFIED
Chavez BriddickAustraliaBernardo Dominic RENEWAL
Isabel BowleyRussiaAsiya Javayant NEGOTIATION
Sinclair WaycottArgentinaIvan Magalhaes RENEWAL
Deepesh ChuiUnited KingdomIvan Magalhaes 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>