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
Alejandro PerinAustraliaAnna Fali NEW
Kaitlin OstroskyArgentinaAsiya Javayant UNQUALIFIED
Wickens NestleGermanyBernardo Dominic PROPOSAL
Jefferson SchemmerAustraliaAsiya Javayant QUALIFIED
Darci PoquetteJapanBernardo Dominic RENEWAL
Salvatore StockhamGermanyStephen Shaw NEW
Aruna FigeroaFranceStephen Shaw NEW
Jennifer AmigonJapanAnna Fali PROPOSAL
Jones VocelkaItalyAmy Elsner NEGOTIATION
Ivar PaprockiGermanyBernardo Dominic PROPOSAL
Alejandro PerinUnited KingdomAnna Fali UNQUALIFIED
Adams MorascaSpainIvan Magalhaes PROPOSAL
Clifford RimIndiaOnyama Limba RENEWAL
Julie StensethArgentinaIoni Bowcher RENEWAL
Chavez BriddickUnited KingdomIvan Magalhaes NEW
Chavez BriddickRussiaXuxue Feng QUALIFIED
James ButtJapanBernardo Dominic QUALIFIED
Antonio CaudyIndiaElwin Sharvill NEW
David DarakjyAustraliaOnyama Limba QUALIFIED
Murillo MaletCanadaAsiya Javayant RENEWAL
Rodrigues CampainSpainAsiya Javayant NEW
Francesco ShinkoCanadaIvan Magalhaes RENEWAL
Clifford RimAustraliaAnna Fali PROPOSAL
Jones VocelkaFranceAnna Fali UNQUALIFIED
Deepesh ChuiBrazilElwin Sharvill PROPOSAL
David DarakjyCanadaOnyama Limba NEW
Ivar PaprockiSpainIoni Bowcher PROPOSAL
Morrow RutaIndiaBernardo Dominic UNQUALIFIED
Faith GillianFranceAmy Elsner RENEWAL
James ButtRussiaBernardo Dominic UNQUALIFIED
Leja CaldareraJapanIvan Magalhaes NEGOTIATION
Rodrigues CampainGermanyAmy Elsner PROPOSAL
Francesco ShinkoIndiaXuxue Feng NEW
Aruna FigeroaJapanIoni Bowcher PROPOSAL
Murillo MaletCanadaAnna Fali QUALIFIED
Chavez BriddickIndiaAsiya Javayant QUALIFIED
Alejandro PerinArgentinaXuxue Feng QUALIFIED
Wickens NestleIndiaStephen Shaw UNQUALIFIED
Sinclair WaycottRussiaXuxue Feng NEGOTIATION
Johnson SergiRussiaElwin Sharvill NEW
Claire TollnerIndiaXuxue Feng RENEWAL
Jones VocelkaRussiaIoni Bowcher QUALIFIED
Darci PoquetteBrazilIoni Bowcher RENEWAL
Munro FerenczGermanyXuxue Feng UNQUALIFIED
Wickens NestleItalyAnna Fali QUALIFIED
Jennifer AmigonBrazilIoni Bowcher UNQUALIFIED
Johnson SergiGermanyIoni Bowcher NEW
Ivar PaprockiIndiaElwin Sharvill PROPOSAL
Francesco ShinkoFranceAmy Elsner QUALIFIED
Francesco ShinkoCanadaIoni Bowcher PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Emily WhobreyFranceAnna Fali UNQUALIFIED
Clifford RimArgentinaStephen Shaw NEW
Murillo MaletGermanyIoni Bowcher NEGOTIATION
Morrow RutaCanadaXuxue Feng NEGOTIATION
Cody SaylorsFranceIoni Bowcher UNQUALIFIED
Alejandro PerinItalyAnna Fali RENEWAL
Faith GillianCanadaBernardo Dominic NEW
Adams MorascaFranceAsiya Javayant UNQUALIFIED
Isabel BowleyCanadaStephen Shaw NEW
Adams MorascaCanadaXuxue Feng RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Juan WieserJapan2025-09-17Rousseaux, Michael Esq NEGOTIATION13Ioni Bowcher
1001Jeanfrancois VenereGermany2025-09-17Feltz Printing Service UNQUALIFIED78Xuxue Feng
1002Misaki RoysterCanada2025-09-20Feiner Bros NEGOTIATION53Stephen Shaw
1003Misaki RoysterIndia2025-10-14Chemel, James L Cpa QUALIFIED38Ioni Bowcher
1004Cody SaylorsIndia2025-10-11Commercial Press QUALIFIED83Ivan Magalhaes
1005Cody SaylorsAustralia2025-10-12King, Christopher A Esq UNQUALIFIED2Onyama Limba
1006Kadeem FlosiArgentina2025-09-30Buckley Miller Wright PROPOSAL88Anna Fali
1007Munro FerenczUnited Kingdom2025-10-01Rangoni Of Florence NEW42Ioni Bowcher
1008Adams MorascaAustralia2025-09-25Morlong Associates UNQUALIFIED30Elwin Sharvill
1009Arvin AlbaresBrazil2025-09-22Benton, John B Jr PROPOSAL87Onyama Limba
1010Alejandro PerinItaly2025-10-03Dorl, James J Esq UNQUALIFIED65Anna Fali
1011Aika InouyeFrance2025-09-17Chapman, Ross E Esq NEGOTIATION38Onyama Limba
1012Cody SaylorsIndia2025-10-09Rousseaux, Michael Esq QUALIFIED56Ivan Magalhaes
1013James ButtAustralia2025-09-19Morlong Associates PROPOSAL0Asiya Javayant
1014Cody SaylorsSpain2025-10-05Commercial Press NEGOTIATION34Asiya Javayant
1015Aditya KuskoArgentina2025-10-11Commercial Press NEW16Stephen Shaw
1016Alejandro PerinJapan2025-09-19Dorl, James J Esq PROPOSAL15Bernardo Dominic
1017Smith GlickJapan2025-10-11Chanay, Jeffrey A Esq QUALIFIED73Bernardo Dominic
1018Faith GillianItaly2025-10-13King, Christopher A Esq PROPOSAL15Ivan Magalhaes
1019Maisha RulapaughJapan2025-09-20Feiner Bros RENEWAL36Bernardo Dominic
1020Aruna FigeroaItaly2025-10-03Buckley Miller Wright UNQUALIFIED86Ioni Bowcher
1021Wickens NestleGermany2025-10-05Chapman, Ross E Esq PROPOSAL72Stephen Shaw
1022Julie StensethArgentina2025-10-05Feltz Printing Service NEGOTIATION61Ioni Bowcher
1023Leja CaldareraBrazil2025-09-25Printing Dimensions NEW22Stephen Shaw
1024Tony FollerItaly2025-10-10Dorl, James J Esq QUALIFIED92Onyama Limba
1025Izzy GarufiItaly2025-09-23Commercial Press NEGOTIATION72Stephen Shaw
1026Misaki RoysterCanada2025-09-30Buckley Miller Wright UNQUALIFIED75Xuxue Feng
1027Salvatore StockhamBrazil2025-09-30King, Christopher A Esq PROPOSAL32Stephen Shaw
1028Juan WieserUnited Kingdom2025-10-16Morlong Associates RENEWAL66Ivan Magalhaes
1029Maisha RulapaughAustralia2025-09-21Chemel, James L Cpa NEGOTIATION74Elwin Sharvill
1030Leon OldroydGermany2025-09-22Chemel, James L Cpa NEGOTIATION69Asiya Javayant
1031Ivar PaprockiUnited Kingdom2025-09-26Chemel, James L Cpa UNQUALIFIED62Onyama Limba
1032Chavez BriddickBrazil2025-09-18Commercial Press PROPOSAL42Asiya Javayant
1033Silvio SlusarskiItaly2025-10-02Buckley Miller Wright UNQUALIFIED71Ivan Magalhaes
1034Julie StensethAustralia2025-10-08Morlong Associates RENEWAL12Onyama Limba
1035Leon OldroydRussia2025-09-27Rangoni Of Florence NEW88Asiya Javayant
1036Ivar PaprockiArgentina2025-09-21Dorl, James J Esq RENEWAL53Asiya Javayant
1037Jeanfrancois VenereAustralia2025-09-17Commercial Press RENEWAL48Stephen Shaw
1038Smith GlickGermany2025-09-20Rousseaux, Michael Esq PROPOSAL66Xuxue Feng
1039David DarakjyBrazil2025-10-02Chemel, James L Cpa NEGOTIATION39Onyama Limba
1040Jefferson SchemmerSpain2025-10-10King, Christopher A Esq PROPOSAL79Xuxue Feng
1041Darci PoquetteAustralia2025-10-07Morlong Associates NEGOTIATION26Bernardo Dominic
1042Ivar PaprockiBrazil2025-10-15Dorl, James J Esq RENEWAL58Amy Elsner
1043Leon OldroydSpain2025-09-23Morlong Associates UNQUALIFIED57Onyama Limba
1044Maria MarrierItaly2025-09-19Buckley Miller Wright RENEWAL11Anna Fali
1045Aditya KuskoRussia2025-09-24Feiner Bros PROPOSAL3Bernardo Dominic
1046Jefferson SchemmerArgentina2025-09-26Feiner Bros PROPOSAL82Ioni Bowcher
1047Aditya KuskoSpain2025-09-20Chapman, Ross E Esq QUALIFIED53Elwin Sharvill
1048Kadeem FlosiFrance2025-09-28Buckley Miller Wright NEGOTIATION76Anna Fali
1049Chavez BriddickArgentina2025-09-24Truhlar And Truhlar Attys RENEWAL26Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Claire TollnerAustraliaAmy Elsner PROPOSAL
Aruna FigeroaSpainStephen Shaw PROPOSAL
Rodrigues CampainCanadaOnyama Limba PROPOSAL
Rodrigues CampainJapanBernardo Dominic NEW
Ivar PaprockiRussiaAmy Elsner QUALIFIED
Jennifer AmigonIndiaAsiya Javayant NEGOTIATION
Antonio CaudySpainAsiya Javayant NEGOTIATION
Emily WhobreyBrazilIvan Magalhaes RENEWAL
Munro FerenczCanadaAmy Elsner NEW
Jennifer AmigonArgentinaIvan Magalhaes UNQUALIFIED
Emily WhobreyAustraliaStephen Shaw NEW
Wickens NestleBrazilAsiya Javayant NEW
Faith GillianGermanyOnyama Limba NEW
Leon OldroydRussiaIoni Bowcher NEW
Rodrigues CampainBrazilStephen Shaw NEW
Rodrigues CampainAustraliaAnna Fali NEW
Wickens NestleGermanyAmy Elsner PROPOSAL
Maria MarrierArgentinaAmy Elsner QUALIFIED
Darci PoquetteUnited KingdomAmy Elsner NEGOTIATION
Chavez BriddickSpainAmy Elsner NEGOTIATION
Francesco ShinkoRussiaStephen Shaw NEW
Arvin AlbaresFranceIoni Bowcher NEGOTIATION
Nicolas IturbideGermanyElwin Sharvill NEW
Mujtaba NickaFranceElwin Sharvill QUALIFIED
Izzy GarufiUnited KingdomOnyama Limba NEW
Maria MarrierFranceIoni Bowcher UNQUALIFIED
James ButtGermanyAnna Fali UNQUALIFIED
Jeanfrancois VenereFranceAnna Fali NEGOTIATION
Mujtaba NickaBrazilIvan Magalhaes PROPOSAL
Aditya KuskoUnited KingdomIvan Magalhaes NEGOTIATION
Adams MorascaSpainAnna Fali PROPOSAL
Murillo MaletItalyAmy Elsner PROPOSAL
Octavia MaletJapanAsiya Javayant PROPOSAL
Julie StensethSpainAsiya Javayant UNQUALIFIED
Darci PoquetteRussiaIvan Magalhaes UNQUALIFIED
Silvio SlusarskiGermanyIoni Bowcher NEW
Claire TollnerRussiaAnna Fali UNQUALIFIED
Julie StensethCanadaAmy Elsner PROPOSAL
Isabel BowleyAustraliaAnna Fali RENEWAL
Salvatore StockhamIndiaIoni Bowcher RENEWAL
Rodrigues CampainBrazilXuxue Feng UNQUALIFIED
Aika InouyeUnited KingdomIoni Bowcher QUALIFIED
Antonio CaudyAustraliaElwin Sharvill RENEWAL
Stacey MacleadGermanyIvan Magalhaes RENEWAL
Leja CaldareraIndiaStephen Shaw NEGOTIATION
Juan WieserAustraliaAsiya Javayant RENEWAL
Aruna FigeroaUnited KingdomAnna Fali NEW
Aika InouyeAustraliaStephen Shaw NEW
Costa DilliardUnited KingdomIoni Bowcher NEGOTIATION
Julie StensethGermanyStephen Shaw PROPOSAL
Frozen Columns
Name
Leja Caldarera
Julie Stenseth
Adams Morasca
Clifford Rim
Jeanfrancois Venere
Smith Glick
Munro Ferencz
Munro Ferencz
Mujtaba Nicka
Jennifer Amigon
Silvio Slusarski
Juan Wieser
Arvin Albares
Antonio Caudy
Costa Dilliard
Mayumi Kolmetz
Ashley Doe
Antonio Caudy
Leon Oldroyd
Chavez Briddick
Francesco Shinko
Leon Oldroyd
Julie Stenseth
Julie Stenseth
Chavez Briddick
Juan Wieser
Emily Whobrey
Mayumi Kolmetz
Leja Caldarera
Jeanfrancois Venere
Francesco Shinko
Misaki Royster
Maria Marrier
Wickens Nestle
Aditya Kusko
Cody Saylors
Isabel Bowley
Salvatore Stockham
Nicolas Iturbide
Emily Whobrey
Alejandro Perin
Maria Marrier
Smith Glick
Deepesh Chui
Emily Whobrey
Octavia Malet
Ivar Paprocki
Alejandro Perin
Ricardo Gaucho
Alejandro Perin
IdCountryDate
1000United Kingdom2025-10-10
1001Argentina2025-10-03
1002Japan2025-10-12
1003Japan2025-09-17
1004Brazil2025-10-12
1005Brazil2025-10-15
1006United Kingdom2025-09-23
1007Italy2025-10-03
1008Italy2025-10-14
1009Canada2025-09-17
1010Australia2025-10-14
1011France2025-09-29
1012Italy2025-09-26
1013Spain2025-09-28
1014Canada2025-10-01
1015Brazil2025-10-05
1016Canada2025-10-05
1017Canada2025-09-21
1018France2025-09-21
1019Japan2025-09-17
1020Canada2025-09-29
1021India2025-10-01
1022Germany2025-09-29
1023France2025-09-30
1024Brazil2025-09-25
1025Japan2025-10-12
1026Australia2025-10-02
1027Brazil2025-09-26
1028Argentina2025-10-16
1029Brazil2025-10-09
1030Japan2025-10-11
1031United Kingdom2025-09-24
1032Russia2025-10-16
1033Spain2025-10-06
1034Russia2025-09-26
1035Italy2025-09-17
1036Spain2025-10-01
1037India2025-09-25
1038Brazil2025-09-23
1039Germany2025-10-04
1040France2025-10-14
1041Italy2025-10-03
1042Canada2025-10-04
1043Spain2025-09-26
1044Argentina2025-10-07
1045Japan2025-10-05
1046Italy2025-09-23
1047Russia2025-10-05
1048France2025-10-04
1049Italy2025-10-09

On-Demand Data

NameIdCountryDate
Antonio Caudy1000Germany2025-09-30
Jefferson Schemmer1001Spain2025-10-05
Nicolas Iturbide1002Italy2025-09-28
Costa Dilliard1003United Kingdom2025-10-13
Silvio Slusarski1004Japan2025-10-05
Deepesh Chui1005Argentina2025-10-13
Jones Vocelka1006Russia2025-10-05
Isabel Bowley1007Germany2025-10-05
Alejandro Perin1008Russia2025-10-02
Emily Whobrey1009Australia2025-09-24
Ivar Paprocki1010Germany2025-10-12
Stacey Maclead1011Brazil2025-10-13
Chavez Briddick1012Brazil2025-09-19
Leon Oldroyd1013France2025-09-27
David Darakjy1014Russia2025-09-30
David Darakjy1015Canada2025-09-18
Murillo Malet1016United Kingdom2025-09-18
Juan Wieser1017United Kingdom2025-09-30
Johnson Sergi1018Spain2025-09-24
Kadeem Flosi1019Germany2025-10-12
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Chavez BriddickRussiaAmy Elsner NEW
Nicolas IturbideArgentinaOnyama Limba NEGOTIATION
David DarakjyGermanyBernardo Dominic PROPOSAL
Misaki RoysterItalyOnyama Limba NEGOTIATION
James ButtAustraliaBernardo Dominic QUALIFIED
Ivar PaprockiAustraliaStephen Shaw NEW
Aika InouyeSpainBernardo Dominic RENEWAL
Arvin AlbaresFranceAmy Elsner UNQUALIFIED
Adams MorascaItalyIoni Bowcher PROPOSAL
Chavez BriddickRussiaBernardo Dominic QUALIFIED
Mayumi KolmetzArgentinaAsiya Javayant NEGOTIATION
Izzy GarufiBrazilStephen Shaw NEW
Sinclair WaycottItalyAnna Fali NEW
Alejandro PerinUnited KingdomIvan Magalhaes RENEWAL
Aruna FigeroaJapanStephen Shaw QUALIFIED
Rodrigues CampainSpainAmy Elsner PROPOSAL
Aruna FigeroaCanadaAsiya Javayant RENEWAL
Kadeem FlosiFranceElwin Sharvill NEGOTIATION
Isabel BowleyUnited KingdomBernardo Dominic PROPOSAL
Rodrigues CampainGermanyAsiya Javayant QUALIFIED
Johnson SergiSpainAsiya Javayant UNQUALIFIED
Sinclair WaycottUnited KingdomAnna Fali UNQUALIFIED
Antonio CaudyJapanXuxue Feng PROPOSAL
Smith GlickSpainAmy Elsner NEW
Nicolas IturbideSpainAmy Elsner PROPOSAL
Antonio CaudyCanadaAsiya Javayant UNQUALIFIED
Francesco ShinkoRussiaAsiya Javayant QUALIFIED
Johnson SergiFranceAsiya Javayant PROPOSAL
Salvatore StockhamCanadaIoni Bowcher PROPOSAL
Silvio SlusarskiCanadaXuxue Feng NEGOTIATION
Johnson SergiJapanAmy Elsner NEW
Ivar PaprockiAustraliaOnyama Limba NEGOTIATION
Alejandro PerinSpainElwin Sharvill UNQUALIFIED
Aditya KuskoCanadaAnna Fali UNQUALIFIED
Julie StensethUnited KingdomBernardo Dominic UNQUALIFIED
Murillo MaletIndiaAnna Fali PROPOSAL
Costa DilliardGermanyIoni Bowcher RENEWAL
Leon OldroydIndiaAmy Elsner NEGOTIATION
Claire TollnerCanadaElwin Sharvill UNQUALIFIED
Misaki RoysterAustraliaIvan Magalhaes NEW

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