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
Leja CaldareraAustraliaAsiya Javayant QUALIFIED
Aika InouyeIndiaStephen Shaw NEW
David DarakjyIndiaAnna Fali RENEWAL
Clifford RimItalyStephen Shaw NEW
Costa DilliardIndiaElwin Sharvill NEW
Aditya KuskoJapanElwin Sharvill NEW
Alejandro PerinJapanIoni Bowcher NEW
Salvatore StockhamBrazilBernardo Dominic NEW
Leja CaldareraGermanyStephen Shaw RENEWAL
Leon OldroydRussiaIoni Bowcher NEGOTIATION
Kaitlin OstroskyRussiaIoni Bowcher PROPOSAL
Jennifer AmigonArgentinaAmy Elsner QUALIFIED
Jones VocelkaRussiaStephen Shaw UNQUALIFIED
Claire TollnerAustraliaIoni Bowcher PROPOSAL
Wickens NestleRussiaXuxue Feng NEGOTIATION
Deepesh ChuiFranceAmy Elsner NEGOTIATION
Murillo MaletFranceIvan Magalhaes UNQUALIFIED
Darci PoquetteSpainAsiya Javayant QUALIFIED
Jennifer AmigonUnited KingdomXuxue Feng NEW
Clifford RimCanadaBernardo Dominic UNQUALIFIED
Stacey MacleadArgentinaOnyama Limba PROPOSAL
Adams MorascaAustraliaStephen Shaw QUALIFIED
Mujtaba NickaBrazilIvan Magalhaes QUALIFIED
Morrow RutaJapanBernardo Dominic NEW
Emily WhobreyGermanyAmy Elsner PROPOSAL
Alejandro PerinSpainBernardo Dominic QUALIFIED
Adams MorascaJapanStephen Shaw QUALIFIED
Salvatore StockhamCanadaIvan Magalhaes NEGOTIATION
Cody SaylorsIndiaAsiya Javayant QUALIFIED
Rodrigues CampainUnited KingdomAsiya Javayant QUALIFIED
Cody SaylorsAustraliaStephen Shaw UNQUALIFIED
Isabel BowleyCanadaAsiya Javayant RENEWAL
Isabel BowleyUnited KingdomOnyama Limba NEW
Costa DilliardGermanyAsiya Javayant PROPOSAL
Greenwood BologniaUnited KingdomAnna Fali PROPOSAL
Stacey MacleadCanadaAnna Fali QUALIFIED
Jennifer AmigonArgentinaIvan Magalhaes QUALIFIED
Murillo MaletRussiaXuxue Feng NEGOTIATION
Francesco ShinkoBrazilStephen Shaw NEW
Izzy GarufiIndiaElwin Sharvill QUALIFIED
Mujtaba NickaRussiaIoni Bowcher PROPOSAL
James ButtItalyIoni Bowcher UNQUALIFIED
Murillo MaletArgentinaOnyama Limba RENEWAL
Stacey MacleadArgentinaAmy Elsner NEW
Francesco ShinkoUnited KingdomAmy Elsner PROPOSAL
Clifford RimCanadaStephen Shaw UNQUALIFIED
Ivar PaprockiSpainIoni Bowcher NEGOTIATION
David DarakjyCanadaIvan Magalhaes QUALIFIED
James ButtGermanyElwin Sharvill PROPOSAL
Maisha RulapaughItalyAsiya Javayant NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Deepesh ChuiGermanyElwin Sharvill NEW
Smith GlickRussiaAmy Elsner UNQUALIFIED
Leja CaldareraAustraliaAmy Elsner NEW
Nicolas IturbideSpainAnna Fali PROPOSAL
Morrow RutaSpainAnna Fali NEGOTIATION
Kadeem FlosiUnited KingdomBernardo Dominic NEGOTIATION
Claire TollnerGermanyAmy Elsner UNQUALIFIED
Antonio CaudyGermanyAnna Fali NEW
Smith GlickUnited KingdomOnyama Limba PROPOSAL
Jennifer AmigonSpainAsiya Javayant QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Alejandro PerinCanada2026-05-10Truhlar And Truhlar Attys PROPOSAL3Asiya Javayant
1001Maria MarrierBrazil2026-06-01Chemel, James L Cpa NEGOTIATION79Xuxue Feng
1002Juan WieserBrazil2026-05-07Truhlar And Truhlar Attys QUALIFIED65Ioni Bowcher
1003Juan WieserAustralia2026-05-15Commercial Press NEW60Anna Fali
1004Jennifer AmigonBrazil2026-05-23Rousseaux, Michael Esq UNQUALIFIED96Ioni Bowcher
1005Salvatore StockhamGermany2026-05-13Commercial Press RENEWAL18Anna Fali
1006Jeanfrancois VenereAustralia2026-05-15Rangoni Of Florence NEW62Anna Fali
1007Sinclair WaycottSpain2026-05-18Chemel, James L Cpa RENEWAL72Ivan Magalhaes
1008David DarakjyJapan2026-05-06Commercial Press UNQUALIFIED65Ioni Bowcher
1009Francesco ShinkoCanada2026-05-12Feltz Printing Service PROPOSAL66Amy Elsner
1010Alejandro PerinAustralia2026-05-22Morlong Associates PROPOSAL86Xuxue Feng
1011Jennifer AmigonItaly2026-05-28Chemel, James L Cpa RENEWAL29Ivan Magalhaes
1012Darci PoquetteAustralia2026-05-19Buckley Miller Wright NEGOTIATION41Elwin Sharvill
1013Octavia MaletSpain2026-05-06Buckley Miller Wright QUALIFIED81Ivan Magalhaes
1014Munro FerenczFrance2026-05-28King, Christopher A Esq NEGOTIATION54Amy Elsner
1015Wickens NestleIndia2026-05-30Feltz Printing Service QUALIFIED10Bernardo Dominic
1016Kadeem FlosiArgentina2026-05-28Truhlar And Truhlar Attys NEW63Amy Elsner
1017Aruna FigeroaFrance2026-05-25Commercial Press QUALIFIED77Ioni Bowcher
1018Aruna FigeroaGermany2026-05-27Morlong Associates RENEWAL47Ioni Bowcher
1019Morrow RutaJapan2026-05-05King, Christopher A Esq NEW65Onyama Limba
1020Maria MarrierFrance2026-05-26King, Christopher A Esq RENEWAL93Stephen Shaw
1021Johnson SergiIndia2026-05-04Chemel, James L Cpa NEW3Ivan Magalhaes
1022Nicolas IturbideFrance2026-05-21Benton, John B Jr RENEWAL45Stephen Shaw
1023Izzy GarufiUnited Kingdom2026-05-08Feiner Bros QUALIFIED46Xuxue Feng
1024Alejandro PerinCanada2026-05-25Printing Dimensions QUALIFIED72Ivan Magalhaes
1025Silvio SlusarskiItaly2026-05-06Chemel, James L Cpa RENEWAL85Amy Elsner
1026Costa DilliardJapan2026-05-21Rousseaux, Michael Esq PROPOSAL85Onyama Limba
1027Francesco ShinkoGermany2026-05-25Chemel, James L Cpa PROPOSAL53Ivan Magalhaes
1028Wickens NestleAustralia2026-05-10Feltz Printing Service QUALIFIED98Ioni Bowcher
1029Chavez BriddickIndia2026-05-29Morlong Associates NEGOTIATION7Onyama Limba
1030Jennifer AmigonSpain2026-05-05King, Christopher A Esq UNQUALIFIED62Asiya Javayant
1031Clifford RimIndia2026-05-09Commercial Press NEGOTIATION81Amy Elsner
1032Nicolas IturbideArgentina2026-05-15Printing Dimensions NEW83Asiya Javayant
1033Ricardo GauchoBrazil2026-05-12Truhlar And Truhlar Attys RENEWAL37Amy Elsner
1034Salvatore StockhamAustralia2026-05-12Dorl, James J Esq UNQUALIFIED99Anna Fali
1035Aruna FigeroaCanada2026-05-28Chanay, Jeffrey A Esq NEW5Amy Elsner
1036Arvin AlbaresAustralia2026-05-14Chanay, Jeffrey A Esq RENEWAL98Ivan Magalhaes
1037Arvin AlbaresJapan2026-05-19Truhlar And Truhlar Attys NEW88Asiya Javayant
1038Aruna FigeroaCanada2026-06-01Printing Dimensions UNQUALIFIED42Bernardo Dominic
1039Isabel BowleyBrazil2026-05-29Chapman, Ross E Esq RENEWAL10Asiya Javayant
1040Aditya KuskoIndia2026-05-19Feiner Bros NEGOTIATION59Onyama Limba
1041Faith GillianFrance2026-05-09King, Christopher A Esq PROPOSAL2Anna Fali
1042Mujtaba NickaUnited Kingdom2026-05-23King, Christopher A Esq UNQUALIFIED36Stephen Shaw
1043Costa DilliardRussia2026-05-16Feltz Printing Service RENEWAL64Anna Fali
1044Leja CaldareraUnited Kingdom2026-05-29Rangoni Of Florence NEW7Asiya Javayant
1045Aditya KuskoJapan2026-05-26Buckley Miller Wright NEGOTIATION55Onyama Limba
1046Kadeem FlosiAustralia2026-06-01Rangoni Of Florence NEGOTIATION83Stephen Shaw
1047Leja CaldareraArgentina2026-05-07Feltz Printing Service NEW80Amy Elsner
1048Kadeem FlosiBrazil2026-05-12Rangoni Of Florence NEW5Onyama Limba
1049Leon OldroydFrance2026-05-04Printing Dimensions NEW58Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Ivar PaprockiArgentinaAmy Elsner NEW
Julie StensethItalyElwin Sharvill PROPOSAL
Leja CaldareraUnited KingdomOnyama Limba NEW
Salvatore StockhamSpainStephen Shaw NEW
Alejandro PerinAustraliaIvan Magalhaes NEGOTIATION
Leja CaldareraFranceAmy Elsner QUALIFIED
Ricardo GauchoArgentinaAnna Fali NEW
Darci PoquetteJapanAsiya Javayant NEGOTIATION
Antonio CaudyIndiaAmy Elsner NEGOTIATION
Arvin AlbaresBrazilIoni Bowcher NEW
Greenwood BologniaArgentinaBernardo Dominic NEW
Jennifer AmigonUnited KingdomIoni Bowcher RENEWAL
Misaki RoysterIndiaXuxue Feng UNQUALIFIED
Juan WieserArgentinaXuxue Feng QUALIFIED
Rodrigues CampainArgentinaElwin Sharvill UNQUALIFIED
Ricardo GauchoCanadaOnyama Limba PROPOSAL
Antonio CaudyJapanAsiya Javayant NEW
Isabel BowleyUnited KingdomAmy Elsner QUALIFIED
Adams MorascaBrazilAsiya Javayant QUALIFIED
Faith GillianFranceBernardo Dominic RENEWAL
Julie StensethBrazilStephen Shaw RENEWAL
Mujtaba NickaIndiaBernardo Dominic NEW
Cody SaylorsRussiaStephen Shaw NEW
Kadeem FlosiItalyElwin Sharvill PROPOSAL
Jefferson SchemmerBrazilOnyama Limba NEW
Chavez BriddickRussiaStephen Shaw PROPOSAL
Tony FollerArgentinaAnna Fali QUALIFIED
Deepesh ChuiGermanyIvan Magalhaes PROPOSAL
Antonio CaudyItalyStephen Shaw NEGOTIATION
Leon OldroydAustraliaXuxue Feng NEW
David DarakjyAustraliaAnna Fali QUALIFIED
Johnson SergiBrazilIoni Bowcher NEW
Stacey MacleadRussiaStephen Shaw PROPOSAL
Stacey MacleadAustraliaXuxue Feng PROPOSAL
Adams MorascaIndiaIoni Bowcher UNQUALIFIED
Isabel BowleyUnited KingdomIvan Magalhaes UNQUALIFIED
Mayumi KolmetzGermanyXuxue Feng PROPOSAL
Jones VocelkaArgentinaOnyama Limba QUALIFIED
James ButtIndiaIvan Magalhaes QUALIFIED
Kadeem FlosiSpainAmy Elsner NEW
Rodrigues CampainAustraliaIvan Magalhaes PROPOSAL
Mayumi KolmetzIndiaAnna Fali UNQUALIFIED
James ButtAustraliaAsiya Javayant PROPOSAL
Octavia MaletBrazilBernardo Dominic UNQUALIFIED
Chavez BriddickJapanAsiya Javayant PROPOSAL
Aika InouyeGermanyAmy Elsner NEGOTIATION
Tony FollerUnited KingdomElwin Sharvill PROPOSAL
Arvin AlbaresFranceAnna Fali NEW
Smith GlickIndiaAmy Elsner NEW
Jones VocelkaArgentinaStephen Shaw QUALIFIED
Frozen Columns
Name
Nicolas Iturbide
Ashley Doe
Claire Tollner
Mayumi Kolmetz
Alejandro Perin
Alejandro Perin
Nicolas Iturbide
Greenwood Bolognia
Emily Whobrey
Maisha Rulapaugh
Darci Poquette
Johnson Sergi
Kadeem Flosi
Isabel Bowley
Antonio Caudy
Kaitlin Ostrosky
Misaki Royster
Leja Caldarera
Leja Caldarera
Adams Morasca
Costa Dilliard
Salvatore Stockham
Mayumi Kolmetz
Greenwood Bolognia
Isabel Bowley
Silvio Slusarski
Chavez Briddick
Smith Glick
Rodrigues Campain
Stacey Maclead
Sinclair Waycott
Maria Marrier
Costa Dilliard
Izzy Garufi
Kadeem Flosi
James Butt
Greenwood Bolognia
David Darakjy
Claire Tollner
Ivar Paprocki
Munro Ferencz
Isabel Bowley
Alejandro Perin
Alejandro Perin
Maria Marrier
Tony Foller
Octavia Malet
Maria Marrier
Aika Inouye
Murillo Malet
IdCountryDate
1000Japan2026-05-26
1001Germany2026-06-01
1002Spain2026-06-01
1003Germany2026-05-03
1004Brazil2026-05-22
1005France2026-05-19
1006Brazil2026-05-10
1007United Kingdom2026-05-08
1008Argentina2026-05-28
1009Germany2026-05-25
1010Canada2026-05-24
1011Brazil2026-05-05
1012Japan2026-05-22
1013Italy2026-05-13
1014India2026-05-07
1015Australia2026-05-05
1016Spain2026-05-27
1017Canada2026-05-14
1018Spain2026-05-17
1019Australia2026-05-26
1020India2026-05-17
1021Brazil2026-06-01
1022France2026-05-30
1023India2026-05-29
1024Brazil2026-05-22
1025Russia2026-05-19
1026Spain2026-05-26
1027Brazil2026-05-19
1028India2026-05-31
1029Argentina2026-05-30
1030India2026-05-15
1031France2026-06-01
1032Japan2026-05-17
1033Canada2026-05-21
1034Brazil2026-05-03
1035Canada2026-05-11
1036Russia2026-05-18
1037United Kingdom2026-05-15
1038India2026-05-12
1039France2026-05-07
1040Japan2026-05-16
1041Canada2026-05-21
1042Italy2026-05-23
1043United Kingdom2026-05-08
1044Russia2026-05-16
1045Italy2026-05-09
1046Russia2026-05-03
1047Spain2026-05-11
1048Spain2026-05-12
1049United Kingdom2026-05-16

On-Demand Data

NameIdCountryDate
Greenwood Bolognia1000Japan2026-05-25
Misaki Royster1001Russia2026-05-12
Misaki Royster1002India2026-05-12
James Butt1003Japan2026-05-18
Octavia Malet1004Brazil2026-05-04
Murillo Malet1005India2026-05-14
Leja Caldarera1006Canada2026-05-19
Murillo Malet1007India2026-05-31
Ivar Paprocki1008Russia2026-05-30
Jennifer Amigon1009India2026-05-09
Claire Tollner1010Italy2026-05-15
Julie Stenseth1011Germany2026-06-01
Francesco Shinko1012Russia2026-05-22
Octavia Malet1013Australia2026-05-25
Tony Foller1014Italy2026-05-23
Morrow Ruta1015Australia2026-05-17
Silvio Slusarski1016Russia2026-05-17
Murillo Malet1017United Kingdom2026-05-04
Misaki Royster1018Spain2026-05-06
Octavia Malet1019Russia2026-05-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Maria MarrierIndiaAsiya Javayant RENEWAL
Deepesh ChuiFranceIvan Magalhaes UNQUALIFIED
Aika InouyeFranceAmy Elsner PROPOSAL
Alejandro PerinBrazilAmy Elsner NEGOTIATION
Arvin AlbaresUnited KingdomOnyama Limba RENEWAL
Jones VocelkaSpainAnna Fali UNQUALIFIED
Ashley DoeJapanOnyama Limba QUALIFIED
Alejandro PerinIndiaIoni Bowcher QUALIFIED
Aruna FigeroaCanadaAnna Fali NEW
Alejandro PerinBrazilIoni Bowcher NEGOTIATION
Maria MarrierUnited KingdomAnna Fali RENEWAL
Salvatore StockhamUnited KingdomAsiya Javayant QUALIFIED
Faith GillianArgentinaStephen Shaw UNQUALIFIED
Leja CaldareraAustraliaAsiya Javayant QUALIFIED
Misaki RoysterCanadaIvan Magalhaes NEW
Silvio SlusarskiJapanStephen Shaw RENEWAL
Francesco ShinkoArgentinaBernardo Dominic RENEWAL
Chavez BriddickIndiaAsiya Javayant PROPOSAL
Costa DilliardAustraliaAsiya Javayant UNQUALIFIED
Ricardo GauchoGermanyStephen Shaw NEGOTIATION
Jones VocelkaAustraliaIvan Magalhaes RENEWAL
Darci PoquetteRussiaOnyama Limba PROPOSAL
Leon OldroydArgentinaXuxue Feng NEW
Izzy GarufiRussiaAsiya Javayant QUALIFIED
Clifford RimFranceXuxue Feng QUALIFIED
Izzy GarufiCanadaXuxue Feng UNQUALIFIED
Clifford RimSpainIvan Magalhaes PROPOSAL
Costa DilliardBrazilElwin Sharvill NEW
Kadeem FlosiJapanOnyama Limba NEW
Salvatore StockhamBrazilIoni Bowcher RENEWAL
Cody SaylorsAustraliaIvan Magalhaes UNQUALIFIED
Maria MarrierCanadaStephen Shaw NEW
Stacey MacleadUnited KingdomAsiya Javayant NEGOTIATION
Ivar PaprockiUnited KingdomOnyama Limba UNQUALIFIED
Salvatore StockhamArgentinaAsiya Javayant UNQUALIFIED
Juan WieserJapanBernardo Dominic UNQUALIFIED
Ivar PaprockiAustraliaAnna Fali UNQUALIFIED
Sinclair WaycottJapanElwin Sharvill NEGOTIATION
Kaitlin OstroskyArgentinaIoni Bowcher NEGOTIATION
Clifford RimGermanyElwin Sharvill 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>