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
Maria MarrierAustraliaXuxue Feng RENEWAL
Alejandro PerinAustraliaAsiya Javayant QUALIFIED
Rodrigues CampainAustraliaBernardo Dominic NEGOTIATION
Octavia MaletBrazilAsiya Javayant NEW
Mayumi KolmetzSpainIoni Bowcher NEGOTIATION
Clifford RimUnited KingdomXuxue Feng NEW
Isabel BowleyItalyAmy Elsner QUALIFIED
Wickens NestleCanadaStephen Shaw NEW
Octavia MaletGermanyElwin Sharvill UNQUALIFIED
Antonio CaudyCanadaIvan Magalhaes NEW
Chavez BriddickGermanyIvan Magalhaes RENEWAL
Adams MorascaRussiaElwin Sharvill NEW
Salvatore StockhamItalyIvan Magalhaes UNQUALIFIED
Munro FerenczFranceIvan Magalhaes UNQUALIFIED
Greenwood BologniaBrazilStephen Shaw PROPOSAL
Jennifer AmigonFranceBernardo Dominic NEGOTIATION
Smith GlickCanadaXuxue Feng NEGOTIATION
Greenwood BologniaFranceIvan Magalhaes UNQUALIFIED
Sinclair WaycottJapanIoni Bowcher NEGOTIATION
Deepesh ChuiGermanyXuxue Feng PROPOSAL
Clifford RimSpainXuxue Feng NEGOTIATION
Silvio SlusarskiFranceAnna Fali QUALIFIED
Morrow RutaBrazilStephen Shaw RENEWAL
Darci PoquetteCanadaIvan Magalhaes NEGOTIATION
Adams MorascaJapanAmy Elsner UNQUALIFIED
Stacey MacleadArgentinaAsiya Javayant RENEWAL
Aditya KuskoSpainOnyama Limba UNQUALIFIED
Chavez BriddickUnited KingdomXuxue Feng QUALIFIED
Wickens NestleItalyAnna Fali NEGOTIATION
Nicolas IturbideRussiaAnna Fali NEW
Francesco ShinkoFranceElwin Sharvill NEGOTIATION
Octavia MaletArgentinaXuxue Feng PROPOSAL
Jennifer AmigonSpainIvan Magalhaes UNQUALIFIED
Leon OldroydAustraliaIoni Bowcher QUALIFIED
Murillo MaletAustraliaAnna Fali NEGOTIATION
Isabel BowleyItalyAnna Fali NEGOTIATION
Emily WhobreyFranceAsiya Javayant NEW
Adams MorascaRussiaOnyama Limba QUALIFIED
Jeanfrancois VenereGermanyIoni Bowcher UNQUALIFIED
Arvin AlbaresFranceElwin Sharvill UNQUALIFIED
Johnson SergiBrazilAmy Elsner PROPOSAL
Munro FerenczRussiaOnyama Limba NEGOTIATION
Darci PoquetteSpainAsiya Javayant PROPOSAL
Leon OldroydJapanStephen Shaw NEW
Mujtaba NickaItalyOnyama Limba RENEWAL
Misaki RoysterIndiaAmy Elsner PROPOSAL
Murillo MaletUnited KingdomAnna Fali UNQUALIFIED
Morrow RutaAustraliaElwin Sharvill PROPOSAL
Ivar PaprockiGermanyIoni Bowcher RENEWAL
Morrow RutaAustraliaXuxue Feng NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Stacey MacleadBrazilOnyama Limba PROPOSAL
Misaki RoysterItalyOnyama Limba RENEWAL
Stacey MacleadFranceOnyama Limba QUALIFIED
Cody SaylorsArgentinaOnyama Limba PROPOSAL
Maisha RulapaughBrazilAmy Elsner UNQUALIFIED
David DarakjyRussiaXuxue Feng NEW
Tony FollerArgentinaIoni Bowcher UNQUALIFIED
Octavia MaletCanadaAnna Fali UNQUALIFIED
Izzy GarufiAustraliaIvan Magalhaes PROPOSAL
Munro FerenczBrazilBernardo Dominic RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Chavez BriddickRussia2026-05-20Rousseaux, Michael Esq NEGOTIATION90Asiya Javayant
1001Salvatore StockhamSpain2026-05-15Chemel, James L Cpa UNQUALIFIED56Xuxue Feng
1002Juan WieserIndia2026-05-16Feltz Printing Service NEW84Anna Fali
1003Murillo MaletSpain2026-05-09Printing Dimensions UNQUALIFIED51Onyama Limba
1004Izzy GarufiUnited Kingdom2026-05-27Chanay, Jeffrey A Esq PROPOSAL55Bernardo Dominic
1005Johnson SergiSpain2026-05-12King, Christopher A Esq UNQUALIFIED32Amy Elsner
1006Faith GillianRussia2026-05-27Buckley Miller Wright NEGOTIATION32Asiya Javayant
1007Antonio CaudyBrazil2026-06-05King, Christopher A Esq UNQUALIFIED24Asiya Javayant
1008Mujtaba NickaArgentina2026-05-14Benton, John B Jr NEW91Amy Elsner
1009Juan WieserJapan2026-05-12Dorl, James J Esq UNQUALIFIED27Ioni Bowcher
1010Octavia MaletAustralia2026-05-27Morlong Associates NEW62Amy Elsner
1011Aruna FigeroaCanada2026-05-25Dorl, James J Esq QUALIFIED62Xuxue Feng
1012Chavez BriddickRussia2026-05-09Truhlar And Truhlar Attys UNQUALIFIED91Asiya Javayant
1013Isabel BowleyJapan2026-06-06Rousseaux, Michael Esq QUALIFIED23Stephen Shaw
1014Wickens NestleAustralia2026-06-01King, Christopher A Esq QUALIFIED77Stephen Shaw
1015Maria MarrierArgentina2026-05-28Commercial Press UNQUALIFIED0Asiya Javayant
1016David DarakjyAustralia2026-05-25Feiner Bros RENEWAL3Asiya Javayant
1017Ricardo GauchoRussia2026-05-16Feiner Bros QUALIFIED88Elwin Sharvill
1018Chavez BriddickFrance2026-05-29Truhlar And Truhlar Attys RENEWAL75Anna Fali
1019Smith GlickBrazil2026-05-19Feltz Printing Service NEGOTIATION46Ivan Magalhaes
1020Francesco ShinkoRussia2026-05-10Benton, John B Jr NEW73Onyama Limba
1021Juan WieserRussia2026-05-29Feiner Bros NEGOTIATION0Elwin Sharvill
1022Kadeem FlosiSpain2026-05-15Printing Dimensions UNQUALIFIED31Asiya Javayant
1023Julie StensethFrance2026-05-28Printing Dimensions QUALIFIED92Bernardo Dominic
1024Ivar PaprockiArgentina2026-05-12Dorl, James J Esq QUALIFIED75Onyama Limba
1025Octavia MaletBrazil2026-05-09Benton, John B Jr RENEWAL13Xuxue Feng
1026Stacey MacleadSpain2026-05-19Benton, John B Jr RENEWAL11Amy Elsner
1027Kaitlin OstroskyBrazil2026-05-22Dorl, James J Esq NEGOTIATION44Bernardo Dominic
1028Maisha RulapaughGermany2026-05-30Feiner Bros NEGOTIATION86Anna Fali
1029Ricardo GauchoCanada2026-05-26Feltz Printing Service RENEWAL21Bernardo Dominic
1030Julie StensethAustralia2026-05-09Benton, John B Jr PROPOSAL43Ivan Magalhaes
1031Isabel BowleyAustralia2026-05-29Benton, John B Jr NEW17Elwin Sharvill
1032Jennifer AmigonFrance2026-05-13Chapman, Ross E Esq QUALIFIED35Anna Fali
1033Misaki RoysterAustralia2026-05-26Chanay, Jeffrey A Esq PROPOSAL29Xuxue Feng
1034Aika InouyeUnited Kingdom2026-05-24Morlong Associates QUALIFIED10Elwin Sharvill
1035Adams MorascaCanada2026-05-30Feltz Printing Service NEW5Stephen Shaw
1036Ivar PaprockiItaly2026-05-26Commercial Press PROPOSAL9Asiya Javayant
1037Cody SaylorsRussia2026-05-10King, Christopher A Esq RENEWAL69Xuxue Feng
1038Misaki RoysterUnited Kingdom2026-05-28Commercial Press RENEWAL78Elwin Sharvill
1039Juan WieserIndia2026-05-16Rousseaux, Michael Esq NEGOTIATION73Anna Fali
1040Ashley DoeAustralia2026-05-20Buckley Miller Wright QUALIFIED92Onyama Limba
1041Stacey MacleadBrazil2026-06-02Commercial Press QUALIFIED80Ioni Bowcher
1042Cody SaylorsFrance2026-05-21Feltz Printing Service NEGOTIATION77Ivan Magalhaes
1043Mayumi KolmetzAustralia2026-06-05Feltz Printing Service NEGOTIATION80Amy Elsner
1044Faith GillianFrance2026-06-05Feiner Bros NEGOTIATION84Onyama Limba
1045Kadeem FlosiSpain2026-06-03Commercial Press NEW93Ioni Bowcher
1046Munro FerenczItaly2026-05-09King, Christopher A Esq PROPOSAL26Asiya Javayant
1047Mujtaba NickaRussia2026-05-15Commercial Press RENEWAL25Elwin Sharvill
1048Clifford RimCanada2026-06-03Feiner Bros UNQUALIFIED22Onyama Limba
1049Juan WieserFrance2026-05-18Chanay, Jeffrey A Esq PROPOSAL64Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Silvio SlusarskiIndiaAsiya Javayant PROPOSAL
Leon OldroydRussiaXuxue Feng PROPOSAL
Jefferson SchemmerItalyStephen Shaw QUALIFIED
James ButtRussiaAmy Elsner PROPOSAL
Juan WieserGermanyAsiya Javayant UNQUALIFIED
Deepesh ChuiArgentinaBernardo Dominic UNQUALIFIED
Ivar PaprockiGermanyAnna Fali NEW
Greenwood BologniaItalyAmy Elsner NEW
Tony FollerIndiaElwin Sharvill RENEWAL
David DarakjySpainOnyama Limba NEGOTIATION
Misaki RoysterAustraliaAmy Elsner QUALIFIED
Silvio SlusarskiCanadaXuxue Feng NEGOTIATION
Kadeem FlosiCanadaAsiya Javayant NEGOTIATION
Julie StensethFranceXuxue Feng RENEWAL
Morrow RutaItalyOnyama Limba QUALIFIED
Johnson SergiItalyElwin Sharvill UNQUALIFIED
Rodrigues CampainAustraliaAsiya Javayant UNQUALIFIED
Nicolas IturbideItalyElwin Sharvill NEW
Clifford RimRussiaXuxue Feng RENEWAL
Chavez BriddickAustraliaIvan Magalhaes RENEWAL
Francesco ShinkoGermanyElwin Sharvill PROPOSAL
Jones VocelkaArgentinaElwin Sharvill NEW
Sinclair WaycottBrazilIvan Magalhaes NEGOTIATION
Johnson SergiItalyStephen Shaw QUALIFIED
Salvatore StockhamBrazilAmy Elsner NEW
Emily WhobreyRussiaXuxue Feng NEW
Wickens NestleArgentinaAmy Elsner UNQUALIFIED
Octavia MaletRussiaIoni Bowcher PROPOSAL
Johnson SergiCanadaIoni Bowcher UNQUALIFIED
Kaitlin OstroskyJapanAmy Elsner NEW
Leon OldroydItalyElwin Sharvill QUALIFIED
Isabel BowleyRussiaStephen Shaw UNQUALIFIED
Juan WieserItalyAmy Elsner NEGOTIATION
Kaitlin OstroskyBrazilOnyama Limba RENEWAL
Darci PoquetteIndiaIoni Bowcher UNQUALIFIED
Jones VocelkaAustraliaElwin Sharvill NEGOTIATION
Juan WieserGermanyElwin Sharvill PROPOSAL
Salvatore StockhamAustraliaXuxue Feng RENEWAL
Greenwood BologniaSpainAsiya Javayant PROPOSAL
Isabel BowleyArgentinaAnna Fali RENEWAL
Maria MarrierBrazilOnyama Limba PROPOSAL
Jennifer AmigonArgentinaXuxue Feng QUALIFIED
Claire TollnerAustraliaElwin Sharvill NEW
Salvatore StockhamUnited KingdomBernardo Dominic PROPOSAL
Clifford RimFranceAnna Fali QUALIFIED
Faith GillianUnited KingdomAnna Fali UNQUALIFIED
Ashley DoeArgentinaElwin Sharvill NEGOTIATION
Leja CaldareraSpainXuxue Feng NEW
Aika InouyeBrazilOnyama Limba QUALIFIED
Maisha RulapaughItalyAnna Fali UNQUALIFIED
Frozen Columns
Name
Arvin Albares
Maisha Rulapaugh
Jones Vocelka
Octavia Malet
Octavia Malet
Izzy Garufi
Jeanfrancois Venere
Smith Glick
Tony Foller
Aika Inouye
Juan Wieser
Antonio Caudy
Faith Gillian
Mujtaba Nicka
Francesco Shinko
Faith Gillian
Leja Caldarera
Tony Foller
Tony Foller
Adams Morasca
Misaki Royster
Chavez Briddick
Rodrigues Campain
Kadeem Flosi
Rodrigues Campain
Clifford Rim
Aruna Figeroa
Rodrigues Campain
Munro Ferencz
Smith Glick
Julie Stenseth
Emily Whobrey
Claire Tollner
Kaitlin Ostrosky
Darci Poquette
Cody Saylors
Stacey Maclead
Leon Oldroyd
Murillo Malet
Silvio Slusarski
Mayumi Kolmetz
Aruna Figeroa
Ricardo Gaucho
Aika Inouye
Murillo Malet
Leja Caldarera
Ashley Doe
Nicolas Iturbide
Morrow Ruta
Antonio Caudy
IdCountryDate
1000Italy2026-05-08
1001United Kingdom2026-06-04
1002Japan2026-05-25
1003Canada2026-06-03
1004India2026-05-21
1005Canada2026-06-01
1006Japan2026-05-15
1007Japan2026-05-21
1008Spain2026-05-29
1009India2026-05-15
1010Italy2026-06-05
1011Canada2026-05-30
1012Russia2026-05-22
1013Italy2026-06-01
1014Australia2026-05-23
1015Brazil2026-05-25
1016Japan2026-05-19
1017Russia2026-06-03
1018Japan2026-06-04
1019United Kingdom2026-05-20
1020Japan2026-05-28
1021Australia2026-05-11
1022India2026-05-20
1023Italy2026-05-26
1024Australia2026-05-31
1025Japan2026-05-13
1026Germany2026-05-17
1027India2026-05-09
1028Australia2026-05-19
1029Japan2026-06-05
1030Canada2026-05-15
1031Russia2026-05-19
1032United Kingdom2026-05-11
1033France2026-06-03
1034Russia2026-05-31
1035France2026-05-16
1036United Kingdom2026-06-03
1037Canada2026-05-14
1038Canada2026-05-24
1039India2026-05-14
1040United Kingdom2026-05-19
1041Canada2026-05-08
1042Japan2026-06-03
1043Russia2026-05-31
1044Canada2026-05-19
1045Germany2026-06-02
1046Canada2026-06-01
1047Canada2026-05-11
1048Russia2026-06-06
1049Canada2026-06-03

On-Demand Data

NameIdCountryDate
Emily Whobrey1000France2026-06-04
Ricardo Gaucho1001Italy2026-05-11
Leja Caldarera1002Japan2026-05-20
Sinclair Waycott1003Spain2026-06-05
Isabel Bowley1004Germany2026-05-24
Jones Vocelka1005Germany2026-05-29
Salvatore Stockham1006India2026-05-19
Juan Wieser1007Germany2026-05-20
Silvio Slusarski1008Argentina2026-05-30
Munro Ferencz1009India2026-05-30
Cody Saylors1010Russia2026-05-08
Juan Wieser1011France2026-05-18
Ricardo Gaucho1012United Kingdom2026-05-21
Misaki Royster1013India2026-05-18
Jones Vocelka1014Japan2026-05-10
Juan Wieser1015Canada2026-05-08
Rodrigues Campain1016Japan2026-05-12
Morrow Ruta1017Italy2026-05-24
Johnson Sergi1018Russia2026-05-10
Antonio Caudy1019Germany2026-06-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Julie StensethAustraliaElwin Sharvill NEGOTIATION
Jeanfrancois VenereUnited KingdomXuxue Feng QUALIFIED
Leja CaldareraIndiaStephen Shaw UNQUALIFIED
Mujtaba NickaIndiaAmy Elsner NEW
Jones VocelkaJapanStephen Shaw NEW
Kadeem FlosiFranceStephen Shaw PROPOSAL
Misaki RoysterBrazilAsiya Javayant NEGOTIATION
Maria MarrierFranceAmy Elsner QUALIFIED
Julie StensethBrazilIvan Magalhaes QUALIFIED
Sinclair WaycottRussiaAmy Elsner QUALIFIED
Stacey MacleadSpainElwin Sharvill NEGOTIATION
Izzy GarufiCanadaElwin Sharvill QUALIFIED
Aika InouyeJapanIvan Magalhaes PROPOSAL
Arvin AlbaresSpainIvan Magalhaes PROPOSAL
Isabel BowleyItalyAmy Elsner UNQUALIFIED
Maria MarrierJapanAsiya Javayant UNQUALIFIED
Kadeem FlosiUnited KingdomOnyama Limba NEGOTIATION
Mujtaba NickaItalyOnyama Limba QUALIFIED
Alejandro PerinItalyIvan Magalhaes NEGOTIATION
Alejandro PerinUnited KingdomAsiya Javayant UNQUALIFIED
Julie StensethBrazilStephen Shaw UNQUALIFIED
Izzy GarufiArgentinaStephen Shaw PROPOSAL
James ButtItalyXuxue Feng NEW
Sinclair WaycottItalyAmy Elsner NEGOTIATION
Nicolas IturbideAustraliaIoni Bowcher NEW
Ivar PaprockiItalyStephen Shaw NEW
Faith GillianSpainAsiya Javayant NEGOTIATION
Chavez BriddickGermanyAsiya Javayant UNQUALIFIED
Cody SaylorsItalyOnyama Limba PROPOSAL
Tony FollerArgentinaXuxue Feng NEGOTIATION
Adams MorascaFranceOnyama Limba QUALIFIED
Darci PoquetteSpainAmy Elsner NEW
Darci PoquetteFranceIvan Magalhaes NEGOTIATION
Leja CaldareraSpainIoni Bowcher UNQUALIFIED
Jones VocelkaAustraliaStephen Shaw PROPOSAL
Julie StensethIndiaAnna Fali NEW
Isabel BowleyGermanyIvan Magalhaes NEW
Faith GillianAustraliaIvan Magalhaes NEW
Greenwood BologniaFranceBernardo Dominic QUALIFIED
Jones VocelkaAustraliaAnna Fali 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>