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
Maisha RulapaughUnited KingdomElwin Sharvill NEW
Claire TollnerGermanyOnyama Limba RENEWAL
Aika InouyeGermanyAnna Fali NEGOTIATION
Chavez BriddickItalyBernardo Dominic QUALIFIED
Ashley DoeUnited KingdomBernardo Dominic UNQUALIFIED
Alejandro PerinFranceAnna Fali UNQUALIFIED
Adams MorascaGermanyOnyama Limba PROPOSAL
Costa DilliardFranceAsiya Javayant NEW
Tony FollerRussiaAsiya Javayant UNQUALIFIED
Kadeem FlosiRussiaAsiya Javayant UNQUALIFIED
Wickens NestleJapanElwin Sharvill RENEWAL
Wickens NestleJapanIoni Bowcher QUALIFIED
Salvatore StockhamArgentinaIoni Bowcher PROPOSAL
Clifford RimItalyIvan Magalhaes QUALIFIED
Octavia MaletAustraliaAmy Elsner NEW
Isabel BowleyIndiaAnna Fali NEGOTIATION
Silvio SlusarskiBrazilIvan Magalhaes RENEWAL
Morrow RutaSpainBernardo Dominic RENEWAL
Ivar PaprockiSpainBernardo Dominic NEW
Faith GillianUnited KingdomStephen Shaw UNQUALIFIED
Ashley DoeUnited KingdomIvan Magalhaes PROPOSAL
Tony FollerAustraliaIvan Magalhaes UNQUALIFIED
Leon OldroydSpainOnyama Limba RENEWAL
Cody SaylorsBrazilIvan Magalhaes NEW
Darci PoquetteArgentinaAnna Fali UNQUALIFIED
Jefferson SchemmerRussiaAnna Fali NEGOTIATION
Misaki RoysterJapanIvan Magalhaes QUALIFIED
Ashley DoeSpainStephen Shaw PROPOSAL
Kadeem FlosiSpainIvan Magalhaes UNQUALIFIED
Ricardo GauchoGermanyIvan Magalhaes UNQUALIFIED
Mujtaba NickaCanadaIvan Magalhaes RENEWAL
Costa DilliardIndiaElwin Sharvill NEW
Clifford RimIndiaOnyama Limba QUALIFIED
Adams MorascaUnited KingdomElwin Sharvill PROPOSAL
Smith GlickSpainOnyama Limba NEGOTIATION
Kaitlin OstroskyCanadaStephen Shaw NEGOTIATION
Kaitlin OstroskyIndiaIoni Bowcher NEGOTIATION
Costa DilliardSpainIoni Bowcher PROPOSAL
Aika InouyeGermanyBernardo Dominic QUALIFIED
Smith GlickIndiaOnyama Limba NEGOTIATION
Ricardo GauchoCanadaIvan Magalhaes RENEWAL
Wickens NestleSpainIvan Magalhaes RENEWAL
Clifford RimJapanOnyama Limba RENEWAL
Juan WieserItalyBernardo Dominic NEGOTIATION
Alejandro PerinItalyElwin Sharvill NEW
Ivar PaprockiRussiaXuxue Feng NEGOTIATION
Stacey MacleadBrazilAmy Elsner NEGOTIATION
Izzy GarufiFranceStephen Shaw NEGOTIATION
Ricardo GauchoCanadaAnna Fali UNQUALIFIED
Tony FollerBrazilIvan Magalhaes NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Jeanfrancois VenereArgentinaOnyama Limba NEGOTIATION
Juan WieserGermanyAsiya Javayant NEW
Leon OldroydFranceIoni Bowcher NEW
Juan WieserIndiaOnyama Limba RENEWAL
Johnson SergiSpainIoni Bowcher NEGOTIATION
Faith GillianAustraliaIvan Magalhaes RENEWAL
Deepesh ChuiIndiaIvan Magalhaes NEGOTIATION
Deepesh ChuiIndiaOnyama Limba NEW
Antonio CaudyIndiaXuxue Feng UNQUALIFIED
Aditya KuskoJapanIoni Bowcher NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aditya KuskoIndia2026-06-08Morlong Associates QUALIFIED63Onyama Limba
1001Claire TollnerAustralia2026-05-26Dorl, James J Esq UNQUALIFIED19Asiya Javayant
1002Alejandro PerinSpain2026-05-24Morlong Associates PROPOSAL76Ioni Bowcher
1003Sinclair WaycottRussia2026-05-20Feiner Bros UNQUALIFIED10Xuxue Feng
1004Emily WhobreyItaly2026-05-19Printing Dimensions RENEWAL67Ivan Magalhaes
1005Silvio SlusarskiBrazil2026-06-08Printing Dimensions RENEWAL76Bernardo Dominic
1006Emily WhobreySpain2026-06-08Truhlar And Truhlar Attys QUALIFIED76Onyama Limba
1007Smith GlickArgentina2026-06-09Commercial Press QUALIFIED32Amy Elsner
1008Rodrigues CampainGermany2026-05-25Chapman, Ross E Esq RENEWAL3Anna Fali
1009Kaitlin OstroskyItaly2026-05-21Commercial Press PROPOSAL88Asiya Javayant
1010Alejandro PerinItaly2026-05-24Morlong Associates RENEWAL61Xuxue Feng
1011Murillo MaletIndia2026-06-08Chemel, James L Cpa RENEWAL34Onyama Limba
1012Maisha RulapaughCanada2026-06-04Dorl, James J Esq PROPOSAL15Ivan Magalhaes
1013Ashley DoeSpain2026-05-25Rousseaux, Michael Esq NEW18Onyama Limba
1014Darci PoquetteItaly2026-06-06Chanay, Jeffrey A Esq NEW74Xuxue Feng
1015Mayumi KolmetzRussia2026-05-28Feltz Printing Service NEGOTIATION13Ivan Magalhaes
1016Antonio CaudyAustralia2026-06-10Morlong Associates RENEWAL24Onyama Limba
1017Isabel BowleyBrazil2026-05-18Rangoni Of Florence RENEWAL19Stephen Shaw
1018Costa DilliardItaly2026-06-02King, Christopher A Esq RENEWAL24Onyama Limba
1019Smith GlickArgentina2026-05-23Printing Dimensions UNQUALIFIED30Xuxue Feng
1020Chavez BriddickSpain2026-06-16Chapman, Ross E Esq NEW94Ivan Magalhaes
1021Wickens NestleItaly2026-05-29Rousseaux, Michael Esq PROPOSAL41Amy Elsner
1022Ashley DoeAustralia2026-05-24Feiner Bros QUALIFIED40Stephen Shaw
1023Jennifer AmigonArgentina2026-06-08Chemel, James L Cpa QUALIFIED64Elwin Sharvill
1024Costa DilliardUnited Kingdom2026-06-15Printing Dimensions QUALIFIED52Ioni Bowcher
1025Julie StensethBrazil2026-06-01King, Christopher A Esq RENEWAL62Elwin Sharvill
1026Mayumi KolmetzRussia2026-05-30Dorl, James J Esq RENEWAL89Elwin Sharvill
1027Tony FollerFrance2026-06-08Morlong Associates UNQUALIFIED34Amy Elsner
1028Costa DilliardIndia2026-05-27Chanay, Jeffrey A Esq NEW27Elwin Sharvill
1029Leon OldroydJapan2026-05-19Chemel, James L Cpa PROPOSAL71Amy Elsner
1030Aika InouyeSpain2026-05-22King, Christopher A Esq QUALIFIED4Onyama Limba
1031Smith GlickItaly2026-05-24Rangoni Of Florence PROPOSAL79Stephen Shaw
1032Johnson SergiCanada2026-05-24Rangoni Of Florence NEW18Asiya Javayant
1033Johnson SergiFrance2026-05-25King, Christopher A Esq RENEWAL42Ioni Bowcher
1034Emily WhobreyJapan2026-05-26Commercial Press NEGOTIATION45Bernardo Dominic
1035Wickens NestleBrazil2026-06-01Truhlar And Truhlar Attys PROPOSAL91Stephen Shaw
1036Munro FerenczSpain2026-05-30Benton, John B Jr NEW37Stephen Shaw
1037Kaitlin OstroskyAustralia2026-06-11Buckley Miller Wright QUALIFIED79Anna Fali
1038Aruna FigeroaSpain2026-05-23Buckley Miller Wright QUALIFIED57Asiya Javayant
1039David DarakjyCanada2026-06-01Benton, John B Jr QUALIFIED79Xuxue Feng
1040Francesco ShinkoRussia2026-05-26Rangoni Of Florence QUALIFIED20Onyama Limba
1041Mujtaba NickaItaly2026-06-14Printing Dimensions NEGOTIATION42Ioni Bowcher
1042Jennifer AmigonBrazil2026-06-08King, Christopher A Esq QUALIFIED82Bernardo Dominic
1043Silvio SlusarskiFrance2026-06-01Morlong Associates RENEWAL75Onyama Limba
1044Faith GillianSpain2026-05-30Morlong Associates QUALIFIED30Onyama Limba
1045Aruna FigeroaIndia2026-06-14Chemel, James L Cpa NEW13Stephen Shaw
1046Ashley DoeFrance2026-06-16Rangoni Of Florence UNQUALIFIED9Ivan Magalhaes
1047Maria MarrierFrance2026-05-31Morlong Associates NEGOTIATION50Asiya Javayant
1048Smith GlickAustralia2026-06-12Printing Dimensions QUALIFIED99Onyama Limba
1049Mayumi KolmetzFrance2026-05-21Buckley Miller Wright QUALIFIED87Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Morrow RutaItalyIvan Magalhaes RENEWAL
Greenwood BologniaGermanyAsiya Javayant PROPOSAL
Sinclair WaycottBrazilElwin Sharvill NEW
Juan WieserJapanAmy Elsner RENEWAL
Wickens NestleRussiaXuxue Feng QUALIFIED
Aika InouyeFranceAsiya Javayant RENEWAL
Aruna FigeroaUnited KingdomOnyama Limba UNQUALIFIED
Sinclair WaycottGermanyIvan Magalhaes RENEWAL
Adams MorascaIndiaIoni Bowcher PROPOSAL
Leja CaldareraSpainAnna Fali PROPOSAL
Claire TollnerArgentinaAsiya Javayant RENEWAL
Greenwood BologniaArgentinaStephen Shaw QUALIFIED
Salvatore StockhamIndiaOnyama Limba PROPOSAL
Alejandro PerinItalyBernardo Dominic PROPOSAL
Wickens NestleItalyBernardo Dominic NEGOTIATION
Misaki RoysterRussiaStephen Shaw NEW
Kadeem FlosiJapanIoni Bowcher UNQUALIFIED
Munro FerenczRussiaAsiya Javayant UNQUALIFIED
James ButtBrazilXuxue Feng QUALIFIED
Faith GillianCanadaIvan Magalhaes NEGOTIATION
James ButtUnited KingdomStephen Shaw PROPOSAL
Maisha RulapaughFranceXuxue Feng PROPOSAL
Octavia MaletFranceAnna Fali NEGOTIATION
Morrow RutaCanadaAnna Fali RENEWAL
Deepesh ChuiBrazilAnna Fali PROPOSAL
Aditya KuskoFranceOnyama Limba NEGOTIATION
Darci PoquetteRussiaXuxue Feng RENEWAL
Maisha RulapaughIndiaBernardo Dominic QUALIFIED
Chavez BriddickFranceStephen Shaw QUALIFIED
Salvatore StockhamArgentinaXuxue Feng NEW
Costa DilliardCanadaOnyama Limba QUALIFIED
James ButtBrazilElwin Sharvill NEGOTIATION
James ButtUnited KingdomStephen Shaw PROPOSAL
Leja CaldareraItalyIvan Magalhaes UNQUALIFIED
Arvin AlbaresAustraliaStephen Shaw NEGOTIATION
Sinclair WaycottItalyXuxue Feng UNQUALIFIED
Ivar PaprockiIndiaIvan Magalhaes UNQUALIFIED
James ButtFranceIoni Bowcher UNQUALIFIED
Darci PoquetteBrazilAsiya Javayant PROPOSAL
Stacey MacleadUnited KingdomBernardo Dominic NEGOTIATION
Aika InouyeItalyElwin Sharvill NEGOTIATION
Maisha RulapaughCanadaAnna Fali NEW
Aika InouyeIndiaXuxue Feng NEGOTIATION
Deepesh ChuiGermanyElwin Sharvill QUALIFIED
Adams MorascaFranceIoni Bowcher RENEWAL
Munro FerenczGermanyAnna Fali UNQUALIFIED
Isabel BowleyItalyAmy Elsner QUALIFIED
Adams MorascaGermanyBernardo Dominic NEGOTIATION
Rodrigues CampainAustraliaElwin Sharvill RENEWAL
Jennifer AmigonUnited KingdomXuxue Feng NEW
Frozen Columns
Name
Adams Morasca
Arvin Albares
Nicolas Iturbide
Misaki Royster
Maria Marrier
Isabel Bowley
Stacey Maclead
Emily Whobrey
Johnson Sergi
Ashley Doe
Silvio Slusarski
Octavia Malet
Leon Oldroyd
Aditya Kusko
Tony Foller
Antonio Caudy
Jones Vocelka
Clifford Rim
Adams Morasca
Jones Vocelka
Aditya Kusko
Francesco Shinko
Jeanfrancois Venere
David Darakjy
Costa Dilliard
Darci Poquette
Izzy Garufi
Alejandro Perin
Munro Ferencz
Salvatore Stockham
Claire Tollner
David Darakjy
Ricardo Gaucho
Salvatore Stockham
Maria Marrier
Darci Poquette
Ashley Doe
Silvio Slusarski
Jefferson Schemmer
Izzy Garufi
Octavia Malet
Izzy Garufi
Salvatore Stockham
Ricardo Gaucho
Nicolas Iturbide
Salvatore Stockham
Sinclair Waycott
Mayumi Kolmetz
Misaki Royster
Claire Tollner
IdCountryDate
1000Germany2026-06-12
1001Canada2026-06-05
1002France2026-06-16
1003Australia2026-05-31
1004Canada2026-05-21
1005Japan2026-05-26
1006United Kingdom2026-05-27
1007France2026-06-10
1008Italy2026-05-22
1009France2026-05-27
1010Germany2026-06-01
1011Australia2026-06-14
1012United Kingdom2026-06-08
1013France2026-06-03
1014United Kingdom2026-06-07
1015Australia2026-06-07
1016United Kingdom2026-05-25
1017Argentina2026-05-24
1018Russia2026-06-10
1019United Kingdom2026-05-21
1020Russia2026-06-02
1021Italy2026-06-10
1022Brazil2026-06-04
1023Australia2026-05-25
1024Japan2026-05-30
1025Canada2026-06-05
1026Australia2026-06-04
1027Canada2026-06-15
1028Argentina2026-06-07
1029Germany2026-05-28
1030India2026-06-11
1031United Kingdom2026-05-18
1032Brazil2026-05-18
1033Argentina2026-05-24
1034Japan2026-06-14
1035Australia2026-05-28
1036Russia2026-06-09
1037Russia2026-05-29
1038United Kingdom2026-05-21
1039Brazil2026-06-03
1040Japan2026-06-13
1041Brazil2026-05-28
1042Russia2026-05-27
1043Germany2026-06-09
1044Argentina2026-05-27
1045Russia2026-06-06
1046Germany2026-06-14
1047Brazil2026-05-20
1048Brazil2026-05-18
1049France2026-06-14

On-Demand Data

NameIdCountryDate
Francesco Shinko1000France2026-05-31
Misaki Royster1001Brazil2026-05-26
Juan Wieser1002Brazil2026-05-23
Jones Vocelka1003Germany2026-06-04
Murillo Malet1004Germany2026-06-07
Darci Poquette1005United Kingdom2026-06-08
Ashley Doe1006Australia2026-06-11
Wickens Nestle1007United Kingdom2026-06-10
Misaki Royster1008France2026-05-28
Cody Saylors1009Japan2026-05-26
Johnson Sergi1010Brazil2026-05-29
Misaki Royster1011Spain2026-06-15
Smith Glick1012Spain2026-05-27
Kaitlin Ostrosky1013Argentina2026-05-27
Ivar Paprocki1014France2026-05-21
Aditya Kusko1015Italy2026-05-21
David Darakjy1016Australia2026-05-23
Smith Glick1017India2026-06-01
Chavez Briddick1018France2026-05-29
Deepesh Chui1019France2026-06-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kadeem FlosiItalyXuxue Feng RENEWAL
Jones VocelkaRussiaXuxue Feng NEGOTIATION
Faith GillianItalyOnyama Limba NEGOTIATION
Octavia MaletAustraliaAnna Fali NEW
Silvio SlusarskiUnited KingdomBernardo Dominic UNQUALIFIED
Salvatore StockhamSpainElwin Sharvill NEW
Jennifer AmigonGermanyOnyama Limba QUALIFIED
Juan WieserIndiaIvan Magalhaes NEW
Ivar PaprockiGermanyBernardo Dominic RENEWAL
Cody SaylorsRussiaIvan Magalhaes PROPOSAL
Mayumi KolmetzJapanIoni Bowcher UNQUALIFIED
James ButtCanadaAsiya Javayant NEGOTIATION
Clifford RimBrazilAmy Elsner NEW
Silvio SlusarskiIndiaOnyama Limba NEGOTIATION
Juan WieserSpainBernardo Dominic RENEWAL
Jones VocelkaItalyAsiya Javayant UNQUALIFIED
Kadeem FlosiRussiaIoni Bowcher QUALIFIED
Aruna FigeroaItalyElwin Sharvill NEGOTIATION
Leja CaldareraCanadaIvan Magalhaes NEW
Murillo MaletArgentinaIvan Magalhaes NEW
Francesco ShinkoSpainAnna Fali PROPOSAL
Jennifer AmigonUnited KingdomElwin Sharvill RENEWAL
Sinclair WaycottGermanyXuxue Feng UNQUALIFIED
Kadeem FlosiItalyStephen Shaw UNQUALIFIED
Antonio CaudyUnited KingdomIoni Bowcher PROPOSAL
Adams MorascaItalyBernardo Dominic NEGOTIATION
Claire TollnerIndiaOnyama Limba PROPOSAL
Salvatore StockhamFranceStephen Shaw RENEWAL
Adams MorascaCanadaAsiya Javayant QUALIFIED
David DarakjyRussiaStephen Shaw NEW
Juan WieserGermanyAsiya Javayant RENEWAL
Octavia MaletUnited KingdomXuxue Feng PROPOSAL
Alejandro PerinSpainAmy Elsner NEGOTIATION
Maisha RulapaughSpainElwin Sharvill QUALIFIED
Jones VocelkaRussiaAnna Fali PROPOSAL
Misaki RoysterUnited KingdomIvan Magalhaes NEGOTIATION
Claire TollnerIndiaIvan Magalhaes NEGOTIATION
Chavez BriddickAustraliaElwin Sharvill RENEWAL
Emily WhobreySpainElwin Sharvill RENEWAL
Cody SaylorsRussiaAsiya Javayant NEGOTIATION

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