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
Murillo MaletAustraliaElwin Sharvill UNQUALIFIED
Murillo MaletSpainBernardo Dominic NEW
Misaki RoysterCanadaElwin Sharvill NEW
Wickens NestleRussiaXuxue Feng NEW
Jeanfrancois VenereFranceAmy Elsner NEGOTIATION
Isabel BowleyBrazilOnyama Limba RENEWAL
Adams MorascaArgentinaStephen Shaw PROPOSAL
Izzy GarufiIndiaAmy Elsner NEW
Octavia MaletAustraliaXuxue Feng NEGOTIATION
Deepesh ChuiBrazilAmy Elsner NEGOTIATION
David DarakjyAustraliaStephen Shaw QUALIFIED
Alejandro PerinAustraliaBernardo Dominic PROPOSAL
Leon OldroydSpainIvan Magalhaes QUALIFIED
Jones VocelkaUnited KingdomElwin Sharvill UNQUALIFIED
Izzy GarufiSpainAsiya Javayant PROPOSAL
Ashley DoeFranceAsiya Javayant UNQUALIFIED
Salvatore StockhamCanadaIoni Bowcher NEW
Jones VocelkaGermanyAsiya Javayant NEGOTIATION
Wickens NestleRussiaBernardo Dominic NEW
Mayumi KolmetzIndiaAmy Elsner PROPOSAL
Francesco ShinkoJapanIvan Magalhaes NEW
Arvin AlbaresUnited KingdomAsiya Javayant NEW
Ricardo GauchoCanadaStephen Shaw RENEWAL
Clifford RimCanadaStephen Shaw RENEWAL
Octavia MaletRussiaElwin Sharvill NEW
Faith GillianFranceElwin Sharvill PROPOSAL
Aditya KuskoBrazilIoni Bowcher NEGOTIATION
Claire TollnerSpainIvan Magalhaes RENEWAL
Munro FerenczAustraliaOnyama Limba QUALIFIED
Izzy GarufiGermanyStephen Shaw QUALIFIED
Chavez BriddickSpainAnna Fali NEW
Juan WieserRussiaAnna Fali PROPOSAL
Francesco ShinkoSpainAmy Elsner UNQUALIFIED
Munro FerenczAustraliaAsiya Javayant NEW
Mujtaba NickaSpainAsiya Javayant RENEWAL
Francesco ShinkoFranceElwin Sharvill UNQUALIFIED
Ricardo GauchoAustraliaXuxue Feng NEW
Morrow RutaIndiaBernardo Dominic PROPOSAL
Rodrigues CampainIndiaBernardo Dominic QUALIFIED
Costa DilliardCanadaAsiya Javayant UNQUALIFIED
Maisha RulapaughIndiaAsiya Javayant QUALIFIED
Adams MorascaJapanAmy Elsner RENEWAL
Salvatore StockhamRussiaBernardo Dominic NEGOTIATION
Kadeem FlosiIndiaStephen Shaw QUALIFIED
Izzy GarufiItalyAmy Elsner NEGOTIATION
Jennifer AmigonAustraliaAnna Fali PROPOSAL
Rodrigues CampainBrazilIvan Magalhaes UNQUALIFIED
Munro FerenczArgentinaElwin Sharvill NEW
Silvio SlusarskiUnited KingdomIvan Magalhaes NEW
Faith GillianBrazilOnyama Limba RENEWAL
Horizontal
NameCountryRepresentativeStatus
Ashley DoeRussiaElwin Sharvill QUALIFIED
Silvio SlusarskiSpainIoni Bowcher NEW
Ashley DoeArgentinaAsiya Javayant QUALIFIED
Salvatore StockhamCanadaOnyama Limba UNQUALIFIED
James ButtIndiaXuxue Feng QUALIFIED
Rodrigues CampainBrazilIvan Magalhaes NEW
Tony FollerUnited KingdomBernardo Dominic UNQUALIFIED
Deepesh ChuiSpainAmy Elsner RENEWAL
Ashley DoeUnited KingdomAnna Fali NEW
Faith GillianFranceBernardo Dominic NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Isabel BowleyCanada2026-05-18Benton, John B Jr QUALIFIED30Anna Fali
1001Claire TollnerBrazil2026-05-19Buckley Miller Wright UNQUALIFIED96Elwin Sharvill
1002Arvin AlbaresCanada2026-05-26Chemel, James L Cpa PROPOSAL98Onyama Limba
1003Stacey MacleadGermany2026-05-06Commercial Press QUALIFIED51Ioni Bowcher
1004Leja CaldareraFrance2026-05-26Rousseaux, Michael Esq RENEWAL69Xuxue Feng
1005Morrow RutaCanada2026-05-15Benton, John B Jr RENEWAL67Stephen Shaw
1006Emily WhobreySpain2026-05-16Chanay, Jeffrey A Esq RENEWAL91Ivan Magalhaes
1007Munro FerenczAustralia2026-05-12Commercial Press NEW88Asiya Javayant
1008Arvin AlbaresGermany2026-05-18Commercial Press NEW77Anna Fali
1009Alejandro PerinItaly2026-05-31Rangoni Of Florence UNQUALIFIED68Xuxue Feng
1010Jeanfrancois VenereAustralia2026-05-23Chanay, Jeffrey A Esq NEGOTIATION60Anna Fali
1011Stacey MacleadAustralia2026-05-12Commercial Press RENEWAL10Xuxue Feng
1012James ButtArgentina2026-05-24Feiner Bros NEW32Ivan Magalhaes
1013Mayumi KolmetzIndia2026-05-21Commercial Press NEW80Bernardo Dominic
1014Maisha RulapaughJapan2026-05-20Morlong Associates UNQUALIFIED72Onyama Limba
1015Wickens NestleFrance2026-05-08Printing Dimensions UNQUALIFIED79Stephen Shaw
1016Aditya KuskoSpain2026-05-11Printing Dimensions NEW27Elwin Sharvill
1017Greenwood BologniaCanada2026-05-22Chapman, Ross E Esq NEGOTIATION59Onyama Limba
1018Nicolas IturbideCanada2026-05-18Rangoni Of Florence NEW26Bernardo Dominic
1019Mujtaba NickaBrazil2026-05-07Feltz Printing Service UNQUALIFIED25Anna Fali
1020Greenwood BologniaJapan2026-05-23Chapman, Ross E Esq UNQUALIFIED36Xuxue Feng
1021Octavia MaletFrance2026-05-07Feltz Printing Service PROPOSAL70Ioni Bowcher
1022Johnson SergiGermany2026-05-06Commercial Press PROPOSAL94Onyama Limba
1023Maria MarrierIndia2026-05-08Truhlar And Truhlar Attys NEGOTIATION65Ivan Magalhaes
1024Leja CaldareraAustralia2026-05-28Truhlar And Truhlar Attys PROPOSAL37Stephen Shaw
1025Isabel BowleyAustralia2026-05-22Printing Dimensions NEGOTIATION93Stephen Shaw
1026Morrow RutaAustralia2026-05-18Buckley Miller Wright PROPOSAL51Ivan Magalhaes
1027Chavez BriddickJapan2026-05-26Printing Dimensions RENEWAL56Amy Elsner
1028Darci PoquetteAustralia2026-05-26Truhlar And Truhlar Attys PROPOSAL78Asiya Javayant
1029Ashley DoeAustralia2026-06-02King, Christopher A Esq RENEWAL39Stephen Shaw
1030Smith GlickAustralia2026-05-15Benton, John B Jr PROPOSAL66Onyama Limba
1031Julie StensethRussia2026-05-14Dorl, James J Esq QUALIFIED0Elwin Sharvill
1032Octavia MaletSpain2026-05-19Chapman, Ross E Esq QUALIFIED47Asiya Javayant
1033Greenwood BologniaAustralia2026-05-26Chemel, James L Cpa NEGOTIATION94Anna Fali
1034Aruna FigeroaUnited Kingdom2026-05-17Truhlar And Truhlar Attys QUALIFIED42Ivan Magalhaes
1035Emily WhobreyBrazil2026-06-02Dorl, James J Esq RENEWAL74Anna Fali
1036Maria MarrierSpain2026-05-25King, Christopher A Esq RENEWAL10Bernardo Dominic
1037Francesco ShinkoArgentina2026-06-03Benton, John B Jr NEW40Bernardo Dominic
1038Adams MorascaItaly2026-05-24Dorl, James J Esq QUALIFIED78Anna Fali
1039Greenwood BologniaFrance2026-05-20Feltz Printing Service UNQUALIFIED30Onyama Limba
1040Kaitlin OstroskyArgentina2026-06-03Benton, John B Jr RENEWAL3Onyama Limba
1041Leja CaldareraUnited Kingdom2026-05-11Dorl, James J Esq QUALIFIED80Onyama Limba
1042Mujtaba NickaJapan2026-05-20Rangoni Of Florence NEGOTIATION64Anna Fali
1043Emily WhobreyFrance2026-05-26Chanay, Jeffrey A Esq PROPOSAL87Amy Elsner
1044Johnson SergiGermany2026-06-03Buckley Miller Wright NEW67Anna Fali
1045Sinclair WaycottRussia2026-05-25Chanay, Jeffrey A Esq NEGOTIATION43Amy Elsner
1046Nicolas IturbideIndia2026-05-08Benton, John B Jr NEGOTIATION89Onyama Limba
1047Smith GlickIndia2026-05-12Feltz Printing Service RENEWAL1Anna Fali
1048Maisha RulapaughFrance2026-06-03Dorl, James J Esq NEGOTIATION53Anna Fali
1049Aruna FigeroaCanada2026-05-06Buckley Miller Wright QUALIFIED19Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Juan WieserCanadaElwin Sharvill RENEWAL
Emily WhobreyJapanXuxue Feng NEW
Jefferson SchemmerGermanyIvan Magalhaes QUALIFIED
Misaki RoysterArgentinaOnyama Limba QUALIFIED
Sinclair WaycottIndiaStephen Shaw NEW
Maria MarrierCanadaAmy Elsner PROPOSAL
Aruna FigeroaGermanyXuxue Feng NEW
Juan WieserSpainOnyama Limba NEW
Jennifer AmigonRussiaAsiya Javayant NEGOTIATION
Smith GlickFranceXuxue Feng UNQUALIFIED
Greenwood BologniaBrazilIoni Bowcher UNQUALIFIED
Tony FollerGermanyAsiya Javayant PROPOSAL
Adams MorascaItalyXuxue Feng QUALIFIED
Morrow RutaGermanyAsiya Javayant RENEWAL
Morrow RutaUnited KingdomOnyama Limba RENEWAL
Jefferson SchemmerArgentinaIvan Magalhaes RENEWAL
Salvatore StockhamItalyOnyama Limba PROPOSAL
Jeanfrancois VenereAustraliaOnyama Limba QUALIFIED
Cody SaylorsAustraliaOnyama Limba UNQUALIFIED
Aditya KuskoSpainBernardo Dominic NEW
Adams MorascaItalyStephen Shaw NEW
Juan WieserAustraliaAsiya Javayant RENEWAL
Maisha RulapaughArgentinaElwin Sharvill QUALIFIED
Deepesh ChuiItalyElwin Sharvill NEGOTIATION
Jeanfrancois VenereAustraliaElwin Sharvill PROPOSAL
Tony FollerUnited KingdomElwin Sharvill QUALIFIED
Mujtaba NickaArgentinaIvan Magalhaes PROPOSAL
Kadeem FlosiGermanyOnyama Limba PROPOSAL
Rodrigues CampainItalyStephen Shaw NEW
Johnson SergiIndiaXuxue Feng PROPOSAL
Kaitlin OstroskyJapanElwin Sharvill NEW
Jefferson SchemmerBrazilXuxue Feng QUALIFIED
Stacey MacleadRussiaAmy Elsner PROPOSAL
Alejandro PerinRussiaStephen Shaw UNQUALIFIED
Ashley DoeFranceAmy Elsner NEGOTIATION
Stacey MacleadGermanyOnyama Limba RENEWAL
James ButtGermanyXuxue Feng RENEWAL
Nicolas IturbideAustraliaAnna Fali NEGOTIATION
Tony FollerGermanyElwin Sharvill NEW
Costa DilliardCanadaAmy Elsner UNQUALIFIED
Emily WhobreySpainIoni Bowcher NEW
Kadeem FlosiJapanXuxue Feng NEGOTIATION
Mayumi KolmetzRussiaAmy Elsner PROPOSAL
Faith GillianJapanIvan Magalhaes RENEWAL
Maria MarrierCanadaIvan Magalhaes NEW
Darci PoquetteSpainBernardo Dominic PROPOSAL
Sinclair WaycottAustraliaXuxue Feng PROPOSAL
Darci PoquetteUnited KingdomElwin Sharvill NEW
Octavia MaletGermanyAnna Fali RENEWAL
Octavia MaletFranceBernardo Dominic RENEWAL
Frozen Columns
Name
Aruna Figeroa
Wickens Nestle
Julie Stenseth
James Butt
Octavia Malet
Salvatore Stockham
Adams Morasca
Ivar Paprocki
Alejandro Perin
Kadeem Flosi
Munro Ferencz
Francesco Shinko
Salvatore Stockham
Morrow Ruta
Tony Foller
David Darakjy
Adams Morasca
Jefferson Schemmer
Morrow Ruta
Ivar Paprocki
Deepesh Chui
Mujtaba Nicka
Johnson Sergi
Sinclair Waycott
Silvio Slusarski
Tony Foller
Wickens Nestle
Izzy Garufi
Leon Oldroyd
Rodrigues Campain
Cody Saylors
Darci Poquette
Tony Foller
Juan Wieser
Maisha Rulapaugh
Jefferson Schemmer
Clifford Rim
Jones Vocelka
Leja Caldarera
James Butt
Clifford Rim
Rodrigues Campain
Tony Foller
Darci Poquette
Arvin Albares
Greenwood Bolognia
Silvio Slusarski
Munro Ferencz
Faith Gillian
Jefferson Schemmer
IdCountryDate
1000Russia2026-05-27
1001Japan2026-05-31
1002India2026-05-16
1003United Kingdom2026-05-20
1004Italy2026-05-13
1005Australia2026-06-04
1006France2026-05-26
1007Russia2026-06-01
1008United Kingdom2026-05-27
1009Argentina2026-05-09
1010United Kingdom2026-05-27
1011Russia2026-05-20
1012Brazil2026-05-10
1013India2026-05-20
1014Russia2026-05-17
1015Japan2026-05-12
1016India2026-06-04
1017Spain2026-05-12
1018Japan2026-05-27
1019United Kingdom2026-05-20
1020India2026-05-06
1021India2026-05-09
1022Germany2026-05-06
1023Russia2026-05-20
1024Australia2026-05-11
1025Russia2026-05-19
1026France2026-05-10
1027India2026-05-20
1028Italy2026-05-28
1029India2026-05-11
1030Spain2026-06-04
1031Japan2026-05-27
1032Brazil2026-05-26
1033Canada2026-05-08
1034Italy2026-06-04
1035France2026-05-18
1036Spain2026-05-12
1037Russia2026-05-06
1038Canada2026-05-18
1039Argentina2026-05-14
1040Canada2026-05-07
1041Canada2026-05-31
1042Brazil2026-05-12
1043Canada2026-05-09
1044India2026-05-20
1045Australia2026-05-07
1046Brazil2026-05-21
1047Argentina2026-06-03
1048Argentina2026-05-21
1049Italy2026-05-16

On-Demand Data

NameIdCountryDate
Mayumi Kolmetz1000Italy2026-05-11
Aditya Kusko1001Spain2026-06-03
Jeanfrancois Venere1002India2026-05-31
Faith Gillian1003Japan2026-05-19
Misaki Royster1004Argentina2026-05-30
Munro Ferencz1005Germany2026-05-11
Adams Morasca1006France2026-05-30
Aika Inouye1007Spain2026-05-07
Smith Glick1008Australia2026-05-17
Tony Foller1009Argentina2026-05-30
Deepesh Chui1010Japan2026-05-10
Kaitlin Ostrosky1011Spain2026-05-11
Leja Caldarera1012Japan2026-05-13
Wickens Nestle1013France2026-05-17
James Butt1014Russia2026-05-21
Jones Vocelka1015India2026-05-28
Chavez Briddick1016Italy2026-05-20
Jefferson Schemmer1017Australia2026-05-23
Morrow Ruta1018France2026-05-14
Maria Marrier1019Spain2026-05-31
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Kadeem FlosiItalyXuxue Feng RENEWAL
Silvio SlusarskiItalyElwin Sharvill UNQUALIFIED
Johnson SergiBrazilBernardo Dominic NEGOTIATION
Ashley DoeFranceAsiya Javayant NEGOTIATION
Misaki RoysterRussiaAmy Elsner RENEWAL
Faith GillianBrazilElwin Sharvill UNQUALIFIED
James ButtRussiaIvan Magalhaes RENEWAL
Antonio CaudyItalyAmy Elsner QUALIFIED
Stacey MacleadUnited KingdomStephen Shaw RENEWAL
Darci PoquetteFranceAmy Elsner RENEWAL
Adams MorascaItalyXuxue Feng UNQUALIFIED
Aditya KuskoSpainAsiya Javayant NEGOTIATION
Emily WhobreyGermanyIvan Magalhaes NEW
Mujtaba NickaItalyAnna Fali NEW
Alejandro PerinUnited KingdomStephen Shaw PROPOSAL
Jeanfrancois VenereArgentinaOnyama Limba NEW
David DarakjyJapanXuxue Feng QUALIFIED
Leon OldroydAustraliaOnyama Limba UNQUALIFIED
Jeanfrancois VenereIndiaAmy Elsner QUALIFIED
Ivar PaprockiArgentinaXuxue Feng QUALIFIED
Murillo MaletSpainXuxue Feng RENEWAL
Stacey MacleadUnited KingdomIoni Bowcher NEW
Maria MarrierJapanAnna Fali UNQUALIFIED
Leja CaldareraGermanyXuxue Feng UNQUALIFIED
James ButtFranceElwin Sharvill RENEWAL
Arvin AlbaresFranceAnna Fali NEW
Aditya KuskoGermanyXuxue Feng NEGOTIATION
James ButtSpainAmy Elsner RENEWAL
Mayumi KolmetzAustraliaStephen Shaw NEW
Octavia MaletAustraliaXuxue Feng QUALIFIED
Aditya KuskoSpainAmy Elsner UNQUALIFIED
Smith GlickItalyElwin Sharvill UNQUALIFIED
Clifford RimSpainOnyama Limba PROPOSAL
Emily WhobreyUnited KingdomBernardo Dominic QUALIFIED
Aika InouyeUnited KingdomAnna Fali UNQUALIFIED
Arvin AlbaresRussiaOnyama Limba UNQUALIFIED
Tony FollerArgentinaOnyama Limba RENEWAL
Murillo MaletIndiaAnna Fali PROPOSAL
Ashley DoeAustraliaAmy Elsner NEW
Juan WieserJapanOnyama Limba 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>