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
Julie StensethUnited KingdomXuxue Feng UNQUALIFIED
Adams MorascaJapanBernardo Dominic NEGOTIATION
Claire TollnerAustraliaBernardo Dominic NEW
David DarakjyJapanIoni Bowcher UNQUALIFIED
David DarakjyUnited KingdomAsiya Javayant NEW
Kadeem FlosiJapanStephen Shaw RENEWAL
Mayumi KolmetzUnited KingdomXuxue Feng NEGOTIATION
Octavia MaletJapanOnyama Limba QUALIFIED
Mujtaba NickaCanadaIvan Magalhaes PROPOSAL
Ashley DoeBrazilOnyama Limba UNQUALIFIED
Cody SaylorsSpainOnyama Limba QUALIFIED
Wickens NestleAustraliaStephen Shaw RENEWAL
Wickens NestleJapanStephen Shaw QUALIFIED
Claire TollnerRussiaBernardo Dominic QUALIFIED
Izzy GarufiSpainBernardo Dominic UNQUALIFIED
Ricardo GauchoSpainAmy Elsner NEGOTIATION
Jennifer AmigonIndiaAnna Fali QUALIFIED
Octavia MaletCanadaIoni Bowcher QUALIFIED
Aditya KuskoRussiaIvan Magalhaes PROPOSAL
Arvin AlbaresIndiaAsiya Javayant NEW
Cody SaylorsIndiaIvan Magalhaes RENEWAL
Murillo MaletBrazilElwin Sharvill PROPOSAL
Leja CaldareraAustraliaXuxue Feng PROPOSAL
Rodrigues CampainAustraliaElwin Sharvill NEGOTIATION
Francesco ShinkoUnited KingdomOnyama Limba NEW
Stacey MacleadUnited KingdomXuxue Feng QUALIFIED
Ricardo GauchoItalyElwin Sharvill RENEWAL
James ButtItalyIoni Bowcher RENEWAL
David DarakjyBrazilOnyama Limba QUALIFIED
James ButtSpainElwin Sharvill PROPOSAL
Jennifer AmigonArgentinaStephen Shaw QUALIFIED
Clifford RimItalyStephen Shaw RENEWAL
Antonio CaudyGermanyAsiya Javayant NEGOTIATION
Sinclair WaycottGermanyXuxue Feng NEGOTIATION
Ricardo GauchoRussiaOnyama Limba NEW
Maria MarrierSpainAmy Elsner PROPOSAL
Jones VocelkaSpainXuxue Feng NEGOTIATION
Arvin AlbaresSpainAsiya Javayant QUALIFIED
Claire TollnerFranceIoni Bowcher PROPOSAL
Chavez BriddickRussiaElwin Sharvill NEW
Clifford RimAustraliaBernardo Dominic UNQUALIFIED
Tony FollerJapanBernardo Dominic QUALIFIED
Salvatore StockhamGermanyIvan Magalhaes QUALIFIED
Aditya KuskoIndiaIvan Magalhaes NEW
Costa DilliardRussiaOnyama Limba RENEWAL
Mujtaba NickaGermanyStephen Shaw RENEWAL
Morrow RutaGermanyAnna Fali NEW
Maisha RulapaughJapanAnna Fali NEGOTIATION
Juan WieserIndiaElwin Sharvill QUALIFIED
Jones VocelkaSpainAmy Elsner NEW
Horizontal
NameCountryRepresentativeStatus
Jones VocelkaItalyAsiya Javayant RENEWAL
Darci PoquetteArgentinaIoni Bowcher UNQUALIFIED
Julie StensethFranceIoni Bowcher PROPOSAL
Antonio CaudyArgentinaAsiya Javayant NEW
James ButtSpainIoni Bowcher PROPOSAL
Deepesh ChuiFranceAsiya Javayant RENEWAL
Octavia MaletIndiaBernardo Dominic NEGOTIATION
Chavez BriddickUnited KingdomOnyama Limba UNQUALIFIED
Rodrigues CampainSpainAsiya Javayant UNQUALIFIED
Jefferson SchemmerJapanAmy Elsner PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Nicolas IturbideJapan2026-04-04Chapman, Ross E Esq UNQUALIFIED92Elwin Sharvill
1001Leon OldroydGermany2026-04-18Commercial Press RENEWAL15Amy Elsner
1002Darci PoquetteSpain2026-04-24Chemel, James L Cpa UNQUALIFIED36Bernardo Dominic
1003Rodrigues CampainJapan2026-04-08Chapman, Ross E Esq RENEWAL96Elwin Sharvill
1004Jefferson SchemmerFrance2026-04-23Feltz Printing Service NEW57Amy Elsner
1005Kaitlin OstroskyArgentina2026-04-04Rousseaux, Michael Esq NEW1Xuxue Feng
1006Johnson SergiFrance2026-04-22Benton, John B Jr NEW81Asiya Javayant
1007Arvin AlbaresFrance2026-04-07King, Christopher A Esq NEGOTIATION55Bernardo Dominic
1008Morrow RutaGermany2026-04-24Rangoni Of Florence NEW92Xuxue Feng
1009Nicolas IturbideSpain2026-04-15Printing Dimensions NEGOTIATION4Stephen Shaw
1010Jennifer AmigonFrance2026-04-12Chapman, Ross E Esq NEGOTIATION92Onyama Limba
1011Aruna FigeroaRussia2026-04-12Benton, John B Jr RENEWAL31Asiya Javayant
1012Alejandro PerinCanada2026-04-26Commercial Press NEW44Anna Fali
1013Faith GillianIndia2026-04-14Chemel, James L Cpa QUALIFIED91Xuxue Feng
1014Isabel BowleySpain2026-04-06Buckley Miller Wright UNQUALIFIED66Ivan Magalhaes
1015Alejandro PerinGermany2026-04-01Buckley Miller Wright UNQUALIFIED31Anna Fali
1016Tony FollerBrazil2026-04-11Chemel, James L Cpa PROPOSAL58Stephen Shaw
1017Faith GillianJapan2026-04-19King, Christopher A Esq RENEWAL25Xuxue Feng
1018Jefferson SchemmerCanada2026-04-18Truhlar And Truhlar Attys NEGOTIATION13Onyama Limba
1019Sinclair WaycottBrazil2026-04-04Truhlar And Truhlar Attys RENEWAL60Bernardo Dominic
1020Maisha RulapaughItaly2026-04-15Chanay, Jeffrey A Esq RENEWAL1Ioni Bowcher
1021Wickens NestleSpain2026-04-25Rousseaux, Michael Esq NEGOTIATION15Onyama Limba
1022Greenwood BologniaIndia2026-04-19Feiner Bros NEW70Stephen Shaw
1023Greenwood BologniaArgentina2026-04-19Rousseaux, Michael Esq RENEWAL5Bernardo Dominic
1024Claire TollnerBrazil2026-04-07Rousseaux, Michael Esq NEW82Asiya Javayant
1025Wickens NestleFrance2026-04-30Truhlar And Truhlar Attys NEW70Amy Elsner
1026Octavia MaletArgentina2026-04-05Rousseaux, Michael Esq PROPOSAL3Stephen Shaw
1027Silvio SlusarskiFrance2026-04-23Commercial Press NEW72Xuxue Feng
1028Silvio SlusarskiArgentina2026-04-06Rangoni Of Florence UNQUALIFIED86Ioni Bowcher
1029Julie StensethJapan2026-04-10Commercial Press NEW73Amy Elsner
1030Julie StensethRussia2026-04-10Rangoni Of Florence UNQUALIFIED50Anna Fali
1031Antonio CaudyIndia2026-04-28Feiner Bros NEW78Stephen Shaw
1032Sinclair WaycottJapan2026-04-21Feiner Bros RENEWAL98Amy Elsner
1033Ivar PaprockiSpain2026-04-02Morlong Associates RENEWAL7Ioni Bowcher
1034Wickens NestleUnited Kingdom2026-04-28King, Christopher A Esq RENEWAL91Bernardo Dominic
1035Aruna FigeroaArgentina2026-04-27Rangoni Of Florence RENEWAL85Stephen Shaw
1036Rodrigues CampainJapan2026-04-13King, Christopher A Esq RENEWAL58Anna Fali
1037Juan WieserAustralia2026-04-14King, Christopher A Esq PROPOSAL4Amy Elsner
1038Ricardo GauchoRussia2026-04-29King, Christopher A Esq NEGOTIATION19Bernardo Dominic
1039Faith GillianUnited Kingdom2026-04-05Feltz Printing Service QUALIFIED40Elwin Sharvill
1040Ricardo GauchoJapan2026-04-22Chemel, James L Cpa QUALIFIED88Bernardo Dominic
1041Alejandro PerinCanada2026-04-17Rangoni Of Florence NEGOTIATION61Asiya Javayant
1042Morrow RutaUnited Kingdom2026-04-06Buckley Miller Wright NEW57Onyama Limba
1043Darci PoquetteIndia2026-04-21Feltz Printing Service NEW1Ioni Bowcher
1044Aruna FigeroaIndia2026-04-29Morlong Associates NEGOTIATION54Anna Fali
1045Leja CaldareraArgentina2026-04-16Benton, John B Jr NEGOTIATION56Bernardo Dominic
1046Tony FollerArgentina2026-04-03Morlong Associates PROPOSAL20Stephen Shaw
1047Francesco ShinkoItaly2026-04-30Dorl, James J Esq QUALIFIED46Ioni Bowcher
1048Leja CaldareraArgentina2026-04-20Printing Dimensions UNQUALIFIED91Asiya Javayant
1049Jennifer AmigonCanada2026-04-19Rousseaux, Michael Esq RENEWAL60Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Smith GlickBrazilAnna Fali NEGOTIATION
Arvin AlbaresFranceIoni Bowcher QUALIFIED
Greenwood BologniaAustraliaStephen Shaw QUALIFIED
Stacey MacleadRussiaElwin Sharvill QUALIFIED
Emily WhobreyAustraliaAnna Fali NEW
Rodrigues CampainGermanyXuxue Feng RENEWAL
Arvin AlbaresIndiaAnna Fali PROPOSAL
Antonio CaudyFranceStephen Shaw RENEWAL
Clifford RimArgentinaAsiya Javayant NEGOTIATION
Emily WhobreyArgentinaAnna Fali QUALIFIED
Chavez BriddickUnited KingdomXuxue Feng QUALIFIED
Francesco ShinkoIndiaAnna Fali PROPOSAL
Ivar PaprockiIndiaAnna Fali QUALIFIED
Clifford RimCanadaStephen Shaw UNQUALIFIED
Morrow RutaUnited KingdomBernardo Dominic RENEWAL
Ivar PaprockiJapanAsiya Javayant NEGOTIATION
Ivar PaprockiIndiaBernardo Dominic NEW
Mujtaba NickaIndiaBernardo Dominic PROPOSAL
Misaki RoysterCanadaIoni Bowcher PROPOSAL
Izzy GarufiSpainStephen Shaw UNQUALIFIED
Tony FollerArgentinaOnyama Limba QUALIFIED
Murillo MaletItalyIvan Magalhaes PROPOSAL
Antonio CaudyCanadaOnyama Limba NEGOTIATION
Octavia MaletItalyIvan Magalhaes UNQUALIFIED
David DarakjyIndiaAnna Fali NEGOTIATION
Alejandro PerinAustraliaStephen Shaw NEGOTIATION
Emily WhobreyAustraliaStephen Shaw RENEWAL
Octavia MaletUnited KingdomStephen Shaw NEW
Costa DilliardItalyAnna Fali NEGOTIATION
Adams MorascaRussiaIvan Magalhaes QUALIFIED
Morrow RutaIndiaIvan Magalhaes RENEWAL
Antonio CaudyArgentinaIvan Magalhaes RENEWAL
Costa DilliardGermanyStephen Shaw QUALIFIED
Claire TollnerCanadaAnna Fali NEW
Claire TollnerIndiaAnna Fali NEW
Darci PoquetteIndiaBernardo Dominic NEW
Isabel BowleyFranceElwin Sharvill NEGOTIATION
David DarakjyAustraliaBernardo Dominic QUALIFIED
Stacey MacleadGermanyStephen Shaw UNQUALIFIED
Stacey MacleadJapanAsiya Javayant NEW
Sinclair WaycottJapanElwin Sharvill NEW
Cody SaylorsFranceOnyama Limba NEW
Greenwood BologniaAustraliaAnna Fali QUALIFIED
Darci PoquetteItalyXuxue Feng QUALIFIED
Julie StensethRussiaIvan Magalhaes UNQUALIFIED
Adams MorascaRussiaStephen Shaw QUALIFIED
Leja CaldareraGermanyStephen Shaw NEW
Juan WieserCanadaIoni Bowcher RENEWAL
Maisha RulapaughBrazilAnna Fali PROPOSAL
Kadeem FlosiSpainXuxue Feng UNQUALIFIED
Frozen Columns
Name
Johnson Sergi
Rodrigues Campain
Francesco Shinko
Ashley Doe
Deepesh Chui
Cody Saylors
Mujtaba Nicka
Salvatore Stockham
Mayumi Kolmetz
Deepesh Chui
Alejandro Perin
David Darakjy
Nicolas Iturbide
Deepesh Chui
Rodrigues Campain
Sinclair Waycott
Leja Caldarera
Rodrigues Campain
Costa Dilliard
Kaitlin Ostrosky
Salvatore Stockham
Tony Foller
Octavia Malet
Aika Inouye
Tony Foller
Chavez Briddick
Isabel Bowley
David Darakjy
Adams Morasca
Ivar Paprocki
David Darakjy
Jeanfrancois Venere
Darci Poquette
Adams Morasca
Jones Vocelka
Morrow Ruta
Ashley Doe
Clifford Rim
Nicolas Iturbide
Julie Stenseth
Kadeem Flosi
Isabel Bowley
Stacey Maclead
Mujtaba Nicka
Kaitlin Ostrosky
Ivar Paprocki
Darci Poquette
David Darakjy
Nicolas Iturbide
Sinclair Waycott
IdCountryDate
1000Australia2026-04-10
1001United Kingdom2026-04-30
1002United Kingdom2026-04-11
1003India2026-04-21
1004India2026-04-20
1005Argentina2026-04-22
1006United Kingdom2026-04-20
1007Japan2026-04-07
1008Germany2026-04-02
1009Germany2026-04-26
1010France2026-04-11
1011France2026-04-23
1012Italy2026-04-02
1013Spain2026-04-30
1014Germany2026-04-19
1015Russia2026-04-03
1016Italy2026-04-04
1017Russia2026-04-30
1018Russia2026-04-13
1019France2026-04-29
1020Japan2026-04-01
1021Canada2026-04-11
1022Russia2026-04-17
1023Canada2026-04-17
1024Australia2026-04-02
1025Argentina2026-04-22
1026Italy2026-04-18
1027Japan2026-04-22
1028France2026-04-19
1029Brazil2026-04-20
1030Spain2026-04-28
1031France2026-04-29
1032Argentina2026-04-06
1033Canada2026-04-13
1034Germany2026-04-26
1035Canada2026-04-25
1036Japan2026-04-08
1037France2026-04-05
1038France2026-04-21
1039Italy2026-04-02
1040India2026-04-27
1041Italy2026-04-01
1042Japan2026-04-23
1043Canada2026-04-22
1044Russia2026-04-18
1045Germany2026-04-02
1046Australia2026-04-22
1047Argentina2026-04-26
1048Germany2026-04-09
1049Brazil2026-04-27

On-Demand Data

NameIdCountryDate
Smith Glick1000Russia2026-04-21
Adams Morasca1001France2026-04-05
Misaki Royster1002Russia2026-04-08
Adams Morasca1003United Kingdom2026-04-06
Silvio Slusarski1004Australia2026-04-05
Antonio Caudy1005Brazil2026-04-30
Deepesh Chui1006Japan2026-04-28
Juan Wieser1007Argentina2026-04-28
David Darakjy1008Spain2026-04-03
Emily Whobrey1009Russia2026-04-09
David Darakjy1010Russia2026-04-28
Misaki Royster1011Germany2026-04-17
Mayumi Kolmetz1012Italy2026-04-16
Alejandro Perin1013Russia2026-04-09
Johnson Sergi1014Canada2026-04-19
Ricardo Gaucho1015Spain2026-04-11
Darci Poquette1016Brazil2026-04-27
Julie Stenseth1017India2026-04-29
Antonio Caudy1018United Kingdom2026-04-15
Faith Gillian1019France2026-04-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Chavez BriddickFranceXuxue Feng NEW
Jeanfrancois VenereUnited KingdomElwin Sharvill NEW
Silvio SlusarskiRussiaOnyama Limba RENEWAL
James ButtRussiaAmy Elsner UNQUALIFIED
Mayumi KolmetzFranceAsiya Javayant RENEWAL
Leja CaldareraRussiaAsiya Javayant RENEWAL
Adams MorascaBrazilIoni Bowcher PROPOSAL
Aruna FigeroaJapanXuxue Feng RENEWAL
Kaitlin OstroskySpainXuxue Feng NEW
Mujtaba NickaAustraliaOnyama Limba RENEWAL
Juan WieserBrazilStephen Shaw UNQUALIFIED
Izzy GarufiAustraliaAmy Elsner NEW
Costa DilliardFranceElwin Sharvill NEGOTIATION
Stacey MacleadFranceIvan Magalhaes RENEWAL
Mujtaba NickaRussiaAsiya Javayant RENEWAL
Kadeem FlosiArgentinaElwin Sharvill PROPOSAL
Morrow RutaItalyElwin Sharvill RENEWAL
Stacey MacleadUnited KingdomBernardo Dominic PROPOSAL
Munro FerenczArgentinaOnyama Limba RENEWAL
Leon OldroydFranceIoni Bowcher UNQUALIFIED
Adams MorascaRussiaAnna Fali RENEWAL
Leon OldroydGermanyXuxue Feng NEGOTIATION
Ricardo GauchoAustraliaStephen Shaw NEGOTIATION
Leja CaldareraItalyXuxue Feng RENEWAL
Adams MorascaAustraliaBernardo Dominic NEGOTIATION
Cody SaylorsArgentinaXuxue Feng QUALIFIED
Maisha RulapaughJapanIoni Bowcher QUALIFIED
Munro FerenczRussiaAnna Fali RENEWAL
Aika InouyeRussiaAmy Elsner RENEWAL
Chavez BriddickAustraliaIvan Magalhaes PROPOSAL
David DarakjyArgentinaAnna Fali NEW
Greenwood BologniaUnited KingdomStephen Shaw UNQUALIFIED
David DarakjyArgentinaIoni Bowcher NEW
Munro FerenczSpainElwin Sharvill RENEWAL
Alejandro PerinItalyAnna Fali QUALIFIED
Mayumi KolmetzRussiaBernardo Dominic QUALIFIED
David DarakjySpainAmy Elsner RENEWAL
Faith GillianSpainStephen Shaw UNQUALIFIED
Wickens NestleItalyIvan Magalhaes RENEWAL
Isabel BowleyAustraliaAsiya Javayant UNQUALIFIED

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