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
Juan WieserJapanAnna Fali UNQUALIFIED
Cody SaylorsAustraliaAmy Elsner RENEWAL
Wickens NestleArgentinaAsiya Javayant QUALIFIED
Adams MorascaAustraliaIvan Magalhaes NEW
Ricardo GauchoSpainXuxue Feng QUALIFIED
Leja CaldareraBrazilIvan Magalhaes PROPOSAL
Greenwood BologniaBrazilStephen Shaw UNQUALIFIED
Misaki RoysterIndiaAmy Elsner RENEWAL
Wickens NestleFranceBernardo Dominic UNQUALIFIED
Maria MarrierCanadaIvan Magalhaes QUALIFIED
Sinclair WaycottSpainOnyama Limba NEGOTIATION
Murillo MaletGermanyIoni Bowcher NEGOTIATION
Clifford RimGermanyIoni Bowcher NEGOTIATION
Cody SaylorsUnited KingdomElwin Sharvill PROPOSAL
Jones VocelkaRussiaElwin Sharvill QUALIFIED
Kadeem FlosiBrazilAsiya Javayant PROPOSAL
Salvatore StockhamFranceXuxue Feng NEW
Mayumi KolmetzItalyBernardo Dominic PROPOSAL
David DarakjyFranceBernardo Dominic QUALIFIED
Chavez BriddickJapanIvan Magalhaes QUALIFIED
Aruna FigeroaUnited KingdomAnna Fali UNQUALIFIED
Kaitlin OstroskyAustraliaIvan Magalhaes PROPOSAL
Johnson SergiArgentinaOnyama Limba PROPOSAL
Munro FerenczAustraliaAnna Fali QUALIFIED
Jeanfrancois VenereGermanyElwin Sharvill NEW
Jeanfrancois VenereGermanyAmy Elsner PROPOSAL
Chavez BriddickJapanStephen Shaw PROPOSAL
Darci PoquetteIndiaIoni Bowcher PROPOSAL
Costa DilliardGermanyIvan Magalhaes UNQUALIFIED
Leja CaldareraRussiaXuxue Feng QUALIFIED
Faith GillianItalyBernardo Dominic NEGOTIATION
Johnson SergiAustraliaAsiya Javayant QUALIFIED
Jeanfrancois VenereRussiaIoni Bowcher NEGOTIATION
Aditya KuskoCanadaOnyama Limba RENEWAL
Darci PoquetteItalyXuxue Feng RENEWAL
Jennifer AmigonBrazilOnyama Limba UNQUALIFIED
Stacey MacleadArgentinaOnyama Limba QUALIFIED
Juan WieserCanadaAsiya Javayant NEGOTIATION
Ivar PaprockiItalyIoni Bowcher QUALIFIED
Ivar PaprockiAustraliaIoni Bowcher QUALIFIED
Jennifer AmigonRussiaIvan Magalhaes QUALIFIED
Smith GlickAustraliaBernardo Dominic PROPOSAL
Aika InouyeFranceIoni Bowcher UNQUALIFIED
Murillo MaletSpainStephen Shaw UNQUALIFIED
Leja CaldareraIndiaXuxue Feng UNQUALIFIED
Tony FollerRussiaAnna Fali NEW
David DarakjyArgentinaOnyama Limba UNQUALIFIED
Ashley DoeCanadaAsiya Javayant NEGOTIATION
Jones VocelkaJapanAsiya Javayant NEGOTIATION
Morrow RutaBrazilAnna Fali UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Johnson SergiBrazilElwin Sharvill RENEWAL
Francesco ShinkoAustraliaAnna Fali PROPOSAL
James ButtArgentinaXuxue Feng NEGOTIATION
Leon OldroydSpainAmy Elsner NEW
Jones VocelkaIndiaStephen Shaw RENEWAL
Tony FollerArgentinaAnna Fali NEGOTIATION
Chavez BriddickItalyAsiya Javayant RENEWAL
Arvin AlbaresUnited KingdomAsiya Javayant NEGOTIATION
Antonio CaudyItalyXuxue Feng RENEWAL
Adams MorascaAustraliaBernardo Dominic RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leon OldroydBrazil2026-05-25Feltz Printing Service NEW40Onyama Limba
1001Munro FerenczAustralia2026-05-13Benton, John B Jr PROPOSAL34Onyama Limba
1002Stacey MacleadGermany2026-05-29Buckley Miller Wright PROPOSAL64Onyama Limba
1003Silvio SlusarskiCanada2026-05-26Chapman, Ross E Esq NEW26Stephen Shaw
1004Chavez BriddickUnited Kingdom2026-06-01Morlong Associates UNQUALIFIED85Elwin Sharvill
1005Salvatore StockhamItaly2026-05-29King, Christopher A Esq NEW77Asiya Javayant
1006Clifford RimCanada2026-05-13Chemel, James L Cpa NEGOTIATION29Onyama Limba
1007Emily WhobreyItaly2026-05-28Printing Dimensions QUALIFIED34Xuxue Feng
1008Morrow RutaRussia2026-05-23Commercial Press NEGOTIATION91Elwin Sharvill
1009Ashley DoeJapan2026-05-26Commercial Press PROPOSAL16Amy Elsner
1010Rodrigues CampainSpain2026-05-26Chanay, Jeffrey A Esq QUALIFIED8Anna Fali
1011Greenwood BologniaItaly2026-06-02Printing Dimensions UNQUALIFIED22Asiya Javayant
1012Misaki RoysterAustralia2026-05-23Buckley Miller Wright NEW52Ioni Bowcher
1013David DarakjyJapan2026-06-03King, Christopher A Esq PROPOSAL99Asiya Javayant
1014Nicolas IturbideIndia2026-05-31Rangoni Of Florence QUALIFIED39Amy Elsner
1015Morrow RutaCanada2026-05-16King, Christopher A Esq PROPOSAL32Stephen Shaw
1016Maria MarrierRussia2026-05-10Feltz Printing Service PROPOSAL76Asiya Javayant
1017Wickens NestleFrance2026-05-29Chemel, James L Cpa NEW62Ioni Bowcher
1018Leon OldroydUnited Kingdom2026-06-02Printing Dimensions NEW28Elwin Sharvill
1019Arvin AlbaresGermany2026-05-15Morlong Associates QUALIFIED20Ioni Bowcher
1020Murillo MaletUnited Kingdom2026-05-27King, Christopher A Esq QUALIFIED11Anna Fali
1021Nicolas IturbideItaly2026-05-26Chemel, James L Cpa QUALIFIED40Anna Fali
1022Tony FollerBrazil2026-05-19Feltz Printing Service QUALIFIED55Stephen Shaw
1023Costa DilliardSpain2026-06-06Benton, John B Jr QUALIFIED86Amy Elsner
1024Ivar PaprockiRussia2026-05-26Feiner Bros NEW74Elwin Sharvill
1025Jefferson SchemmerUnited Kingdom2026-05-11Feiner Bros PROPOSAL82Onyama Limba
1026Ricardo GauchoJapan2026-05-22Rangoni Of Florence NEW69Asiya Javayant
1027Aruna FigeroaItaly2026-05-12Chemel, James L Cpa PROPOSAL54Elwin Sharvill
1028Costa DilliardSpain2026-05-18King, Christopher A Esq QUALIFIED72Asiya Javayant
1029Emily WhobreyBrazil2026-05-15Rangoni Of Florence RENEWAL76Onyama Limba
1030Kadeem FlosiRussia2026-05-12Printing Dimensions UNQUALIFIED98Amy Elsner
1031Silvio SlusarskiSpain2026-05-24Commercial Press NEW74Bernardo Dominic
1032David DarakjyIndia2026-05-19Chanay, Jeffrey A Esq NEW2Elwin Sharvill
1033Stacey MacleadCanada2026-05-09Dorl, James J Esq QUALIFIED8Bernardo Dominic
1034Claire TollnerRussia2026-05-28Printing Dimensions UNQUALIFIED26Elwin Sharvill
1035Leja CaldareraArgentina2026-06-06Chemel, James L Cpa NEW68Asiya Javayant
1036Sinclair WaycottSpain2026-05-20Chapman, Ross E Esq PROPOSAL49Ioni Bowcher
1037Jennifer AmigonAustralia2026-05-25Dorl, James J Esq RENEWAL14Bernardo Dominic
1038Isabel BowleyFrance2026-05-24Benton, John B Jr NEGOTIATION14Onyama Limba
1039Emily WhobreyJapan2026-06-02Morlong Associates NEGOTIATION3Bernardo Dominic
1040Tony FollerFrance2026-05-17Buckley Miller Wright RENEWAL49Ivan Magalhaes
1041Aditya KuskoItaly2026-05-26Rousseaux, Michael Esq QUALIFIED46Bernardo Dominic
1042Aditya KuskoFrance2026-05-16Chemel, James L Cpa RENEWAL56Anna Fali
1043James ButtJapan2026-05-25Chapman, Ross E Esq NEW57Bernardo Dominic
1044Mayumi KolmetzGermany2026-05-21Feiner Bros UNQUALIFIED98Asiya Javayant
1045Chavez BriddickFrance2026-05-23King, Christopher A Esq NEW69Ivan Magalhaes
1046Deepesh ChuiUnited Kingdom2026-05-17Printing Dimensions RENEWAL3Elwin Sharvill
1047Chavez BriddickGermany2026-05-26Truhlar And Truhlar Attys UNQUALIFIED73Ioni Bowcher
1048Octavia MaletSpain2026-05-25Feltz Printing Service UNQUALIFIED95Anna Fali
1049Silvio SlusarskiArgentina2026-05-23Printing Dimensions NEW33Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Juan WieserBrazilAnna Fali NEW
Kadeem FlosiRussiaOnyama Limba UNQUALIFIED
Mujtaba NickaFranceOnyama Limba QUALIFIED
Arvin AlbaresArgentinaStephen Shaw PROPOSAL
Jones VocelkaBrazilAsiya Javayant PROPOSAL
Octavia MaletFranceAmy Elsner QUALIFIED
Mayumi KolmetzSpainXuxue Feng UNQUALIFIED
Salvatore StockhamFranceIoni Bowcher NEGOTIATION
David DarakjyIndiaIoni Bowcher RENEWAL
Kadeem FlosiArgentinaIvan Magalhaes NEGOTIATION
Cody SaylorsArgentinaAmy Elsner RENEWAL
Morrow RutaRussiaIoni Bowcher UNQUALIFIED
Jeanfrancois VenereArgentinaStephen Shaw NEGOTIATION
Maria MarrierGermanyElwin Sharvill PROPOSAL
Silvio SlusarskiSpainAnna Fali NEW
Deepesh ChuiRussiaOnyama Limba NEW
Faith GillianBrazilAmy Elsner QUALIFIED
Greenwood BologniaCanadaAmy Elsner QUALIFIED
Leon OldroydIndiaElwin Sharvill NEGOTIATION
Maria MarrierUnited KingdomBernardo Dominic RENEWAL
Stacey MacleadFranceAmy Elsner NEW
Sinclair WaycottGermanyOnyama Limba PROPOSAL
Juan WieserFranceAsiya Javayant NEW
Izzy GarufiCanadaBernardo Dominic UNQUALIFIED
David DarakjyItalyAmy Elsner NEGOTIATION
Ricardo GauchoJapanOnyama Limba RENEWAL
Darci PoquetteAustraliaStephen Shaw NEW
Leja CaldareraIndiaAnna Fali UNQUALIFIED
Silvio SlusarskiIndiaXuxue Feng PROPOSAL
Kaitlin OstroskyBrazilStephen Shaw UNQUALIFIED
Clifford RimSpainIvan Magalhaes NEW
Misaki RoysterFranceStephen Shaw NEGOTIATION
Ricardo GauchoSpainElwin Sharvill UNQUALIFIED
Aditya KuskoRussiaAsiya Javayant RENEWAL
Sinclair WaycottGermanyAnna Fali PROPOSAL
Darci PoquetteAustraliaXuxue Feng NEGOTIATION
Claire TollnerCanadaIoni Bowcher PROPOSAL
Ricardo GauchoJapanAmy Elsner QUALIFIED
Kaitlin OstroskyCanadaOnyama Limba NEW
Aruna FigeroaItalyAnna Fali RENEWAL
Jefferson SchemmerCanadaOnyama Limba NEGOTIATION
Leon OldroydRussiaIoni Bowcher PROPOSAL
Munro FerenczBrazilStephen Shaw UNQUALIFIED
Cody SaylorsIndiaIoni Bowcher NEW
Stacey MacleadGermanyXuxue Feng NEGOTIATION
Claire TollnerArgentinaBernardo Dominic NEW
Misaki RoysterFranceOnyama Limba PROPOSAL
Cody SaylorsJapanBernardo Dominic QUALIFIED
Wickens NestleUnited KingdomAsiya Javayant RENEWAL
Munro FerenczItalyIoni Bowcher QUALIFIED
Frozen Columns
Name
Smith Glick
Aruna Figeroa
Wickens Nestle
Isabel Bowley
Ivar Paprocki
Faith Gillian
Maisha Rulapaugh
Francesco Shinko
Octavia Malet
Misaki Royster
Arvin Albares
Cody Saylors
Tony Foller
Francesco Shinko
Stacey Maclead
Jennifer Amigon
Darci Poquette
Darci Poquette
Leja Caldarera
Aika Inouye
Ivar Paprocki
Jennifer Amigon
Rodrigues Campain
Chavez Briddick
Ashley Doe
Clifford Rim
Maisha Rulapaugh
Stacey Maclead
Clifford Rim
Sinclair Waycott
Claire Tollner
Ivar Paprocki
Aika Inouye
Clifford Rim
Jefferson Schemmer
Emily Whobrey
David Darakjy
Salvatore Stockham
Juan Wieser
Isabel Bowley
Leon Oldroyd
Wickens Nestle
Antonio Caudy
Tony Foller
Kadeem Flosi
Ashley Doe
Alejandro Perin
Morrow Ruta
Aruna Figeroa
Leon Oldroyd
IdCountryDate
1000Japan2026-05-10
1001Russia2026-05-23
1002Canada2026-05-31
1003Canada2026-05-12
1004Russia2026-05-20
1005India2026-05-28
1006Japan2026-05-10
1007Canada2026-05-29
1008United Kingdom2026-05-15
1009France2026-06-06
1010Brazil2026-05-10
1011Australia2026-05-11
1012India2026-06-03
1013Australia2026-05-09
1014Australia2026-05-26
1015United Kingdom2026-05-13
1016Italy2026-05-29
1017Russia2026-06-01
1018France2026-05-23
1019Italy2026-05-10
1020Brazil2026-05-21
1021India2026-06-02
1022India2026-06-02
1023Canada2026-06-05
1024Russia2026-05-14
1025United Kingdom2026-05-17
1026Italy2026-06-03
1027Brazil2026-05-16
1028Argentina2026-06-07
1029Germany2026-05-18
1030Argentina2026-05-30
1031Russia2026-06-03
1032United Kingdom2026-05-12
1033India2026-06-06
1034Germany2026-06-01
1035Argentina2026-06-01
1036Spain2026-05-19
1037Japan2026-05-13
1038Russia2026-06-05
1039France2026-05-14
1040Canada2026-05-27
1041India2026-06-01
1042Australia2026-06-05
1043Russia2026-06-03
1044Argentina2026-05-28
1045Brazil2026-05-24
1046Argentina2026-06-04
1047Italy2026-05-30
1048France2026-05-26
1049Canada2026-05-10

On-Demand Data

NameIdCountryDate
Isabel Bowley1000United Kingdom2026-05-30
Izzy Garufi1001France2026-06-07
Kaitlin Ostrosky1002Argentina2026-05-27
Morrow Ruta1003Russia2026-05-16
Izzy Garufi1004France2026-05-30
Ashley Doe1005Italy2026-06-01
Julie Stenseth1006India2026-06-04
Leon Oldroyd1007India2026-05-22
Chavez Briddick1008Brazil2026-05-16
Nicolas Iturbide1009Germany2026-05-26
David Darakjy1010Spain2026-05-20
Murillo Malet1011Japan2026-05-09
Jones Vocelka1012Argentina2026-05-28
Rodrigues Campain1013France2026-06-05
Julie Stenseth1014France2026-05-17
Jefferson Schemmer1015Australia2026-05-22
Aditya Kusko1016Italy2026-05-20
Juan Wieser1017Spain2026-05-13
Salvatore Stockham1018Australia2026-05-28
Darci Poquette1019France2026-05-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jeanfrancois VenereIndiaAsiya Javayant QUALIFIED
Ashley DoeCanadaAsiya Javayant NEGOTIATION
Costa DilliardSpainIvan Magalhaes UNQUALIFIED
Jennifer AmigonFranceXuxue Feng PROPOSAL
Leja CaldareraIndiaElwin Sharvill UNQUALIFIED
Maisha RulapaughItalyStephen Shaw NEGOTIATION
Izzy GarufiIndiaElwin Sharvill QUALIFIED
Tony FollerCanadaOnyama Limba NEW
Silvio SlusarskiSpainIvan Magalhaes NEW
Ivar PaprockiArgentinaAnna Fali NEGOTIATION
Cody SaylorsUnited KingdomAmy Elsner NEGOTIATION
Silvio SlusarskiJapanIvan Magalhaes RENEWAL
Smith GlickCanadaBernardo Dominic NEW
Claire TollnerIndiaBernardo Dominic NEW
Adams MorascaBrazilStephen Shaw RENEWAL
Juan WieserUnited KingdomOnyama Limba QUALIFIED
Costa DilliardRussiaXuxue Feng QUALIFIED
Emily WhobreyItalyIoni Bowcher RENEWAL
Ricardo GauchoUnited KingdomAmy Elsner QUALIFIED
Deepesh ChuiAustraliaOnyama Limba NEW
Murillo MaletAustraliaStephen Shaw NEGOTIATION
Ashley DoeUnited KingdomBernardo Dominic QUALIFIED
Octavia MaletCanadaElwin Sharvill NEGOTIATION
Smith GlickIndiaOnyama Limba QUALIFIED
Kadeem FlosiAustraliaIvan Magalhaes RENEWAL
Chavez BriddickGermanyAnna Fali RENEWAL
Sinclair WaycottFranceIvan Magalhaes NEGOTIATION
Smith GlickFranceElwin Sharvill NEGOTIATION
Emily WhobreyFranceOnyama Limba QUALIFIED
Aika InouyeUnited KingdomOnyama Limba UNQUALIFIED
Juan WieserBrazilXuxue Feng UNQUALIFIED
Mujtaba NickaItalyStephen Shaw NEGOTIATION
Leon OldroydBrazilAnna Fali PROPOSAL
Octavia MaletGermanyAsiya Javayant QUALIFIED
Kadeem FlosiArgentinaAnna Fali NEGOTIATION
Emily WhobreyCanadaAsiya Javayant RENEWAL
Jones VocelkaRussiaOnyama Limba NEW
Claire TollnerBrazilAmy Elsner PROPOSAL
Francesco ShinkoIndiaIvan Magalhaes PROPOSAL
Maisha RulapaughUnited KingdomBernardo Dominic 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>