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
Jeanfrancois VenereAustraliaIoni Bowcher NEGOTIATION
Kadeem FlosiGermanyXuxue Feng PROPOSAL
Kadeem FlosiJapanIvan Magalhaes NEW
Mayumi KolmetzRussiaOnyama Limba QUALIFIED
Johnson SergiFranceAsiya Javayant UNQUALIFIED
Salvatore StockhamJapanXuxue Feng NEW
Alejandro PerinItalyStephen Shaw RENEWAL
Tony FollerArgentinaIoni Bowcher PROPOSAL
James ButtArgentinaIoni Bowcher NEW
Silvio SlusarskiItalyBernardo Dominic RENEWAL
Faith GillianBrazilBernardo Dominic RENEWAL
Darci PoquetteFranceStephen Shaw NEGOTIATION
Deepesh ChuiCanadaElwin Sharvill RENEWAL
Antonio CaudyRussiaBernardo Dominic PROPOSAL
Kadeem FlosiAustraliaBernardo Dominic NEGOTIATION
Antonio CaudyUnited KingdomIoni Bowcher RENEWAL
Juan WieserCanadaXuxue Feng UNQUALIFIED
Arvin AlbaresCanadaIvan Magalhaes NEW
Francesco ShinkoIndiaIoni Bowcher NEGOTIATION
Darci PoquetteSpainElwin Sharvill RENEWAL
Maria MarrierRussiaAnna Fali PROPOSAL
Johnson SergiAustraliaIoni Bowcher RENEWAL
Ivar PaprockiArgentinaIoni Bowcher QUALIFIED
Kadeem FlosiGermanyOnyama Limba UNQUALIFIED
Claire TollnerFranceAnna Fali UNQUALIFIED
Julie StensethItalyAsiya Javayant UNQUALIFIED
Mujtaba NickaCanadaBernardo Dominic PROPOSAL
Isabel BowleyIndiaAnna Fali UNQUALIFIED
Ashley DoeGermanyAsiya Javayant NEW
Mujtaba NickaFranceBernardo Dominic QUALIFIED
Sinclair WaycottItalyAmy Elsner RENEWAL
Silvio SlusarskiUnited KingdomOnyama Limba RENEWAL
Chavez BriddickUnited KingdomAsiya Javayant PROPOSAL
Darci PoquetteIndiaStephen Shaw NEGOTIATION
Ricardo GauchoFranceOnyama Limba RENEWAL
Deepesh ChuiRussiaAnna Fali QUALIFIED
Faith GillianGermanyBernardo Dominic NEGOTIATION
Faith GillianSpainElwin Sharvill QUALIFIED
Greenwood BologniaFranceAsiya Javayant UNQUALIFIED
Adams MorascaAustraliaXuxue Feng NEW
Antonio CaudyUnited KingdomAnna Fali UNQUALIFIED
David DarakjyItalyBernardo Dominic QUALIFIED
Maisha RulapaughAustraliaAnna Fali NEGOTIATION
Cody SaylorsGermanyAmy Elsner NEW
Maisha RulapaughAustraliaAmy Elsner NEGOTIATION
Kaitlin OstroskyArgentinaAsiya Javayant QUALIFIED
Antonio CaudyIndiaElwin Sharvill PROPOSAL
Smith GlickCanadaOnyama Limba PROPOSAL
Costa DilliardSpainStephen Shaw NEW
Leon OldroydIndiaAnna Fali NEW
Horizontal
NameCountryRepresentativeStatus
Emily WhobreyGermanyStephen Shaw NEGOTIATION
Wickens NestleAustraliaXuxue Feng NEW
Adams MorascaUnited KingdomAmy Elsner NEW
Misaki RoysterArgentinaAnna Fali NEGOTIATION
James ButtBrazilOnyama Limba QUALIFIED
Arvin AlbaresSpainAnna Fali UNQUALIFIED
Sinclair WaycottFranceIvan Magalhaes RENEWAL
Ricardo GauchoItalyOnyama Limba UNQUALIFIED
Wickens NestleItalyXuxue Feng NEW
Clifford RimSpainStephen Shaw NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Sinclair WaycottCanada2026-06-03Dorl, James J Esq UNQUALIFIED68Elwin Sharvill
1001Nicolas IturbideFrance2026-06-11Chemel, James L Cpa NEGOTIATION10Anna Fali
1002Costa DilliardFrance2026-06-10Dorl, James J Esq QUALIFIED33Anna Fali
1003James ButtItaly2026-06-08Feltz Printing Service RENEWAL60Amy Elsner
1004Costa DilliardArgentina2026-06-16Rangoni Of Florence RENEWAL50Stephen Shaw
1005Kadeem FlosiGermany2026-05-25Benton, John B Jr QUALIFIED32Ioni Bowcher
1006Misaki RoysterUnited Kingdom2026-06-12Morlong Associates UNQUALIFIED83Asiya Javayant
1007Chavez BriddickRussia2026-05-29Commercial Press NEW66Ivan Magalhaes
1008Stacey MacleadUnited Kingdom2026-06-19Rangoni Of Florence NEGOTIATION88Amy Elsner
1009Johnson SergiJapan2026-06-14Chanay, Jeffrey A Esq UNQUALIFIED55Asiya Javayant
1010Antonio CaudyGermany2026-06-14King, Christopher A Esq NEW71Onyama Limba
1011Leon OldroydUnited Kingdom2026-05-28King, Christopher A Esq RENEWAL98Onyama Limba
1012Juan WieserArgentina2026-06-14Printing Dimensions NEGOTIATION54Amy Elsner
1013Costa DilliardAustralia2026-05-27Commercial Press NEW86Elwin Sharvill
1014Octavia MaletRussia2026-06-18Rousseaux, Michael Esq UNQUALIFIED99Anna Fali
1015Leon OldroydRussia2026-06-02Rousseaux, Michael Esq PROPOSAL10Asiya Javayant
1016Kadeem FlosiIndia2026-06-01Feiner Bros RENEWAL65Stephen Shaw
1017Morrow RutaIndia2026-05-26Rousseaux, Michael Esq UNQUALIFIED57Ivan Magalhaes
1018Jones VocelkaFrance2026-06-12Rangoni Of Florence QUALIFIED66Anna Fali
1019Cody SaylorsIndia2026-06-03Feiner Bros NEGOTIATION90Amy Elsner
1020Maisha RulapaughFrance2026-06-07Printing Dimensions RENEWAL85Anna Fali
1021Aika InouyeArgentina2026-05-22King, Christopher A Esq UNQUALIFIED66Bernardo Dominic
1022Smith GlickUnited Kingdom2026-06-20Feltz Printing Service RENEWAL15Xuxue Feng
1023Julie StensethSpain2026-06-10Morlong Associates PROPOSAL33Anna Fali
1024Isabel BowleyArgentina2026-06-13King, Christopher A Esq NEW95Anna Fali
1025Wickens NestleItaly2026-05-25Buckley Miller Wright QUALIFIED23Anna Fali
1026Juan WieserAustralia2026-06-09Buckley Miller Wright QUALIFIED97Ivan Magalhaes
1027Mujtaba NickaCanada2026-06-10Feiner Bros NEGOTIATION63Onyama Limba
1028Leon OldroydItaly2026-06-11Feiner Bros UNQUALIFIED58Ioni Bowcher
1029Chavez BriddickUnited Kingdom2026-06-03Chemel, James L Cpa NEGOTIATION41Ivan Magalhaes
1030Stacey MacleadSpain2026-06-06Chapman, Ross E Esq NEGOTIATION63Anna Fali
1031Jefferson SchemmerFrance2026-06-04Chapman, Ross E Esq PROPOSAL26Amy Elsner
1032Ashley DoeItaly2026-06-02King, Christopher A Esq UNQUALIFIED64Amy Elsner
1033Francesco ShinkoItaly2026-05-26Feiner Bros PROPOSAL16Amy Elsner
1034Claire TollnerBrazil2026-06-20Commercial Press RENEWAL70Ioni Bowcher
1035Smith GlickAustralia2026-06-11Rangoni Of Florence UNQUALIFIED47Ioni Bowcher
1036Maisha RulapaughBrazil2026-05-22Chemel, James L Cpa UNQUALIFIED59Stephen Shaw
1037Izzy GarufiSpain2026-06-05Morlong Associates NEGOTIATION21Bernardo Dominic
1038Adams MorascaGermany2026-06-18Benton, John B Jr RENEWAL77Elwin Sharvill
1039Faith GillianIndia2026-06-18Rangoni Of Florence NEGOTIATION1Amy Elsner
1040Ricardo GauchoItaly2026-05-29Buckley Miller Wright RENEWAL43Elwin Sharvill
1041Ashley DoeGermany2026-06-17Truhlar And Truhlar Attys UNQUALIFIED72Onyama Limba
1042Francesco ShinkoAustralia2026-05-24Chemel, James L Cpa RENEWAL94Elwin Sharvill
1043Munro FerenczItaly2026-05-26Chemel, James L Cpa NEGOTIATION76Elwin Sharvill
1044Morrow RutaRussia2026-05-31Buckley Miller Wright PROPOSAL19Xuxue Feng
1045Greenwood BologniaBrazil2026-05-29Feiner Bros PROPOSAL80Onyama Limba
1046Leja CaldareraUnited Kingdom2026-06-07Commercial Press NEW24Elwin Sharvill
1047James ButtArgentina2026-05-24Dorl, James J Esq UNQUALIFIED4Onyama Limba
1048Jefferson SchemmerSpain2026-05-26Rangoni Of Florence RENEWAL33Stephen Shaw
1049Chavez BriddickJapan2026-05-27King, Christopher A Esq QUALIFIED94Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
James ButtGermanyIoni Bowcher UNQUALIFIED
Mayumi KolmetzCanadaAsiya Javayant QUALIFIED
Maisha RulapaughJapanAnna Fali PROPOSAL
Smith GlickFranceAsiya Javayant NEGOTIATION
Misaki RoysterBrazilStephen Shaw PROPOSAL
Kadeem FlosiRussiaAsiya Javayant PROPOSAL
Deepesh ChuiArgentinaElwin Sharvill NEW
Leon OldroydUnited KingdomXuxue Feng NEW
Ricardo GauchoCanadaAnna Fali PROPOSAL
Kaitlin OstroskyFranceAmy Elsner NEGOTIATION
Emily WhobreyCanadaIoni Bowcher NEGOTIATION
Ashley DoeJapanXuxue Feng NEW
Izzy GarufiGermanyStephen Shaw NEW
Rodrigues CampainIndiaIoni Bowcher RENEWAL
Claire TollnerAustraliaAmy Elsner QUALIFIED
Francesco ShinkoUnited KingdomIvan Magalhaes RENEWAL
Mujtaba NickaJapanBernardo Dominic NEGOTIATION
Francesco ShinkoAustraliaElwin Sharvill UNQUALIFIED
Greenwood BologniaRussiaAsiya Javayant NEGOTIATION
Arvin AlbaresSpainOnyama Limba PROPOSAL
Jeanfrancois VenereFranceAmy Elsner PROPOSAL
Maria MarrierItalyStephen Shaw RENEWAL
Misaki RoysterCanadaAnna Fali QUALIFIED
Chavez BriddickJapanXuxue Feng RENEWAL
Arvin AlbaresArgentinaStephen Shaw QUALIFIED
Alejandro PerinAustraliaIoni Bowcher NEGOTIATION
Johnson SergiSpainBernardo Dominic RENEWAL
David DarakjyCanadaBernardo Dominic NEGOTIATION
Leon OldroydAustraliaIoni Bowcher UNQUALIFIED
Tony FollerItalyIoni Bowcher NEGOTIATION
Francesco ShinkoFranceIvan Magalhaes UNQUALIFIED
Darci PoquetteBrazilStephen Shaw NEW
Ashley DoeJapanAmy Elsner PROPOSAL
Ashley DoeGermanyElwin Sharvill UNQUALIFIED
Emily WhobreyIndiaIvan Magalhaes UNQUALIFIED
Clifford RimCanadaIoni Bowcher NEGOTIATION
Salvatore StockhamGermanyBernardo Dominic PROPOSAL
Smith GlickSpainAmy Elsner RENEWAL
Stacey MacleadCanadaAmy Elsner NEW
Sinclair WaycottArgentinaAnna Fali PROPOSAL
Chavez BriddickJapanIoni Bowcher NEW
Maria MarrierRussiaStephen Shaw UNQUALIFIED
Misaki RoysterRussiaAsiya Javayant NEGOTIATION
Octavia MaletRussiaXuxue Feng PROPOSAL
Juan WieserBrazilBernardo Dominic NEW
Silvio SlusarskiItalyIoni Bowcher NEGOTIATION
Ricardo GauchoGermanyAsiya Javayant UNQUALIFIED
James ButtBrazilAsiya Javayant NEW
Darci PoquetteAustraliaXuxue Feng UNQUALIFIED
Jones VocelkaJapanXuxue Feng NEW
Frozen Columns
Name
Octavia Malet
Ashley Doe
Smith Glick
Francesco Shinko
Kaitlin Ostrosky
Kadeem Flosi
Jefferson Schemmer
Misaki Royster
Clifford Rim
Wickens Nestle
Morrow Ruta
Deepesh Chui
Arvin Albares
Misaki Royster
Smith Glick
Jefferson Schemmer
Jennifer Amigon
Sinclair Waycott
Rodrigues Campain
James Butt
Aditya Kusko
Julie Stenseth
James Butt
James Butt
Jennifer Amigon
Deepesh Chui
Misaki Royster
Maria Marrier
Clifford Rim
Salvatore Stockham
Jones Vocelka
Maisha Rulapaugh
Ashley Doe
Octavia Malet
Izzy Garufi
Johnson Sergi
Mayumi Kolmetz
Stacey Maclead
Adams Morasca
Silvio Slusarski
Clifford Rim
Salvatore Stockham
Jefferson Schemmer
Kadeem Flosi
Ivar Paprocki
Isabel Bowley
Mujtaba Nicka
Ashley Doe
Clifford Rim
Misaki Royster
IdCountryDate
1000United Kingdom2026-06-10
1001Japan2026-05-22
1002Brazil2026-06-15
1003Germany2026-05-30
1004Canada2026-06-03
1005France2026-06-14
1006India2026-06-18
1007Argentina2026-06-15
1008Russia2026-06-07
1009Australia2026-06-06
1010Germany2026-06-17
1011France2026-06-01
1012Russia2026-06-08
1013France2026-05-27
1014Germany2026-06-18
1015France2026-06-12
1016India2026-05-27
1017France2026-05-30
1018United Kingdom2026-06-17
1019Brazil2026-06-09
1020United Kingdom2026-06-06
1021Russia2026-06-03
1022Germany2026-06-08
1023Italy2026-06-05
1024France2026-06-15
1025Germany2026-05-29
1026Argentina2026-06-05
1027Russia2026-05-23
1028Spain2026-05-30
1029Spain2026-06-09
1030Italy2026-06-08
1031Japan2026-06-04
1032Australia2026-06-01
1033Italy2026-05-28
1034Brazil2026-05-29
1035United Kingdom2026-05-23
1036Germany2026-06-07
1037India2026-05-31
1038Japan2026-06-15
1039India2026-06-17
1040India2026-06-15
1041Italy2026-06-04
1042Argentina2026-06-18
1043Spain2026-06-01
1044Germany2026-06-19
1045Spain2026-06-01
1046United Kingdom2026-05-31
1047India2026-05-30
1048Germany2026-06-04
1049United Kingdom2026-06-13

On-Demand Data

NameIdCountryDate
Claire Tollner1000Spain2026-05-24
Isabel Bowley1001Argentina2026-06-03
Faith Gillian1002France2026-05-24
Murillo Malet1003Spain2026-05-23
Faith Gillian1004Australia2026-05-29
Isabel Bowley1005United Kingdom2026-05-23
Johnson Sergi1006United Kingdom2026-06-19
Costa Dilliard1007Italy2026-06-15
Juan Wieser1008Australia2026-06-01
Cody Saylors1009Canada2026-05-26
Leja Caldarera1010Russia2026-06-16
Juan Wieser1011Argentina2026-06-20
Francesco Shinko1012Russia2026-06-17
Aruna Figeroa1013France2026-06-02
Aruna Figeroa1014Italy2026-05-22
Salvatore Stockham1015Canada2026-06-20
Darci Poquette1016India2026-05-22
Leon Oldroyd1017Japan2026-06-15
Izzy Garufi1018Argentina2026-06-18
Mayumi Kolmetz1019Spain2026-06-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aika InouyeSpainIvan Magalhaes PROPOSAL
Maisha RulapaughBrazilIvan Magalhaes PROPOSAL
Francesco ShinkoRussiaIoni Bowcher RENEWAL
Maria MarrierBrazilAmy Elsner UNQUALIFIED
Nicolas IturbideAustraliaStephen Shaw NEW
Cody SaylorsBrazilOnyama Limba NEW
Francesco ShinkoJapanBernardo Dominic UNQUALIFIED
Antonio CaudyIndiaXuxue Feng RENEWAL
Julie StensethJapanIvan Magalhaes NEW
Francesco ShinkoGermanyOnyama Limba NEGOTIATION
Nicolas IturbideJapanStephen Shaw QUALIFIED
Emily WhobreyIndiaXuxue Feng QUALIFIED
Munro FerenczUnited KingdomAnna Fali NEGOTIATION
Leon OldroydArgentinaIoni Bowcher PROPOSAL
Munro FerenczSpainAnna Fali RENEWAL
Stacey MacleadArgentinaBernardo Dominic QUALIFIED
Aika InouyeCanadaElwin Sharvill PROPOSAL
Izzy GarufiIndiaElwin Sharvill PROPOSAL
Juan WieserIndiaElwin Sharvill NEW
Smith GlickRussiaAnna Fali QUALIFIED
Ashley DoeRussiaBernardo Dominic NEGOTIATION
Morrow RutaJapanAnna Fali NEGOTIATION
Morrow RutaArgentinaXuxue Feng NEW
Salvatore StockhamUnited KingdomAnna Fali QUALIFIED
James ButtItalyXuxue Feng QUALIFIED
Aditya KuskoArgentinaIoni Bowcher NEGOTIATION
Misaki RoysterUnited KingdomOnyama Limba NEGOTIATION
Tony FollerRussiaIoni Bowcher NEW
James ButtUnited KingdomAmy Elsner QUALIFIED
Octavia MaletUnited KingdomBernardo Dominic RENEWAL
Munro FerenczRussiaStephen Shaw NEW
Misaki RoysterCanadaBernardo Dominic RENEWAL
James ButtBrazilAmy Elsner PROPOSAL
Tony FollerJapanOnyama Limba PROPOSAL
Claire TollnerUnited KingdomElwin Sharvill NEGOTIATION
Wickens NestleCanadaXuxue Feng PROPOSAL
Rodrigues CampainAustraliaIoni Bowcher QUALIFIED
Darci PoquetteBrazilAsiya Javayant UNQUALIFIED
Arvin AlbaresRussiaIvan Magalhaes NEGOTIATION
Juan WieserItalyBernardo Dominic 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>