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
Smith GlickRussiaElwin Sharvill NEW
Nicolas IturbideUnited KingdomIoni Bowcher RENEWAL
Tony FollerUnited KingdomBernardo Dominic PROPOSAL
Jefferson SchemmerIndiaBernardo Dominic UNQUALIFIED
Stacey MacleadArgentinaIoni Bowcher NEGOTIATION
Chavez BriddickArgentinaElwin Sharvill QUALIFIED
Francesco ShinkoBrazilAsiya Javayant NEGOTIATION
Mayumi KolmetzArgentinaElwin Sharvill QUALIFIED
Sinclair WaycottBrazilAsiya Javayant PROPOSAL
Rodrigues CampainItalyElwin Sharvill NEW
Tony FollerBrazilAnna Fali QUALIFIED
Ricardo GauchoItalyAsiya Javayant NEW
Maria MarrierGermanyStephen Shaw UNQUALIFIED
Wickens NestleArgentinaBernardo Dominic RENEWAL
Wickens NestleBrazilAmy Elsner NEW
Leon OldroydIndiaIvan Magalhaes PROPOSAL
Aditya KuskoIndiaAnna Fali NEW
Deepesh ChuiIndiaIoni Bowcher PROPOSAL
Adams MorascaSpainBernardo Dominic QUALIFIED
Juan WieserSpainXuxue Feng PROPOSAL
Maria MarrierIndiaStephen Shaw NEW
Aditya KuskoBrazilIoni Bowcher UNQUALIFIED
Clifford RimBrazilElwin Sharvill NEW
James ButtUnited KingdomAsiya Javayant NEGOTIATION
Jeanfrancois VenereArgentinaOnyama Limba RENEWAL
Arvin AlbaresCanadaBernardo Dominic PROPOSAL
Jennifer AmigonRussiaStephen Shaw UNQUALIFIED
Francesco ShinkoAustraliaAsiya Javayant RENEWAL
Jennifer AmigonArgentinaIoni Bowcher UNQUALIFIED
Deepesh ChuiIndiaAnna Fali NEGOTIATION
Silvio SlusarskiBrazilIoni Bowcher NEW
Emily WhobreyIndiaXuxue Feng NEW
Maisha RulapaughArgentinaOnyama Limba QUALIFIED
Octavia MaletArgentinaOnyama Limba RENEWAL
Kadeem FlosiArgentinaIvan Magalhaes NEW
Deepesh ChuiArgentinaIoni Bowcher UNQUALIFIED
Arvin AlbaresJapanIvan Magalhaes RENEWAL
Wickens NestleIndiaAnna Fali UNQUALIFIED
Mayumi KolmetzAustraliaAsiya Javayant UNQUALIFIED
Mujtaba NickaJapanBernardo Dominic QUALIFIED
Nicolas IturbideGermanyIvan Magalhaes QUALIFIED
Francesco ShinkoArgentinaBernardo Dominic NEW
Octavia MaletAustraliaXuxue Feng UNQUALIFIED
Rodrigues CampainFranceIvan Magalhaes UNQUALIFIED
Ashley DoeUnited KingdomIvan Magalhaes NEGOTIATION
David DarakjyIndiaXuxue Feng NEGOTIATION
Kadeem FlosiFranceBernardo Dominic UNQUALIFIED
Munro FerenczArgentinaAsiya Javayant UNQUALIFIED
Aika InouyeSpainBernardo Dominic QUALIFIED
Julie StensethItalyAnna Fali QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Kaitlin OstroskyArgentinaIvan Magalhaes UNQUALIFIED
Maria MarrierCanadaBernardo Dominic QUALIFIED
Kadeem FlosiIndiaAmy Elsner NEGOTIATION
Mujtaba NickaBrazilIvan Magalhaes NEW
Aditya KuskoCanadaAnna Fali QUALIFIED
Ricardo GauchoUnited KingdomAmy Elsner PROPOSAL
Izzy GarufiBrazilAmy Elsner RENEWAL
Claire TollnerSpainBernardo Dominic NEW
Francesco ShinkoFranceBernardo Dominic UNQUALIFIED
James ButtRussiaIoni Bowcher PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Emily WhobreyBrazil2026-04-02Morlong Associates UNQUALIFIED54Bernardo Dominic
1001Leja CaldareraArgentina2026-03-27Feltz Printing Service NEW82Amy Elsner
1002Octavia MaletFrance2026-03-22Chapman, Ross E Esq PROPOSAL34Xuxue Feng
1003Ashley DoeSpain2026-03-30Commercial Press UNQUALIFIED49Ioni Bowcher
1004Silvio SlusarskiIndia2026-03-27Chemel, James L Cpa PROPOSAL37Amy Elsner
1005James ButtSpain2026-03-23Rangoni Of Florence NEGOTIATION6Bernardo Dominic
1006Mayumi KolmetzItaly2026-04-14Printing Dimensions RENEWAL80Xuxue Feng
1007Ricardo GauchoRussia2026-03-25Benton, John B Jr QUALIFIED90Onyama Limba
1008Isabel BowleyIndia2026-04-18Rangoni Of Florence UNQUALIFIED54Stephen Shaw
1009Francesco ShinkoFrance2026-04-08Commercial Press NEW6Xuxue Feng
1010Munro FerenczRussia2026-04-07Morlong Associates PROPOSAL85Amy Elsner
1011Jennifer AmigonUnited Kingdom2026-04-12Feiner Bros UNQUALIFIED96Stephen Shaw
1012Sinclair WaycottItaly2026-04-08Benton, John B Jr PROPOSAL61Xuxue Feng
1013Smith GlickBrazil2026-03-27King, Christopher A Esq NEW4Amy Elsner
1014Johnson SergiUnited Kingdom2026-03-26King, Christopher A Esq QUALIFIED35Xuxue Feng
1015Munro FerenczBrazil2026-04-07Feiner Bros NEGOTIATION82Anna Fali
1016Salvatore StockhamItaly2026-04-02Dorl, James J Esq NEW24Onyama Limba
1017Mujtaba NickaArgentina2026-03-24Chapman, Ross E Esq PROPOSAL62Ivan Magalhaes
1018Morrow RutaFrance2026-04-04Rousseaux, Michael Esq RENEWAL87Xuxue Feng
1019Aruna FigeroaBrazil2026-04-02Feiner Bros PROPOSAL31Asiya Javayant
1020Faith GillianItaly2026-04-15Rangoni Of Florence UNQUALIFIED56Onyama Limba
1021Jefferson SchemmerBrazil2026-03-27Chanay, Jeffrey A Esq PROPOSAL47Anna Fali
1022Wickens NestleItaly2026-04-19Benton, John B Jr UNQUALIFIED51Bernardo Dominic
1023Nicolas IturbideCanada2026-04-04King, Christopher A Esq RENEWAL28Stephen Shaw
1024Johnson SergiSpain2026-04-09Feltz Printing Service NEGOTIATION20Stephen Shaw
1025Maria MarrierJapan2026-03-23Dorl, James J Esq NEGOTIATION63Xuxue Feng
1026Aika InouyeUnited Kingdom2026-03-25Benton, John B Jr NEW96Stephen Shaw
1027Greenwood BologniaUnited Kingdom2026-04-18Chemel, James L Cpa RENEWAL89Amy Elsner
1028Alejandro PerinSpain2026-04-15Rousseaux, Michael Esq UNQUALIFIED98Ivan Magalhaes
1029Octavia MaletArgentina2026-04-09Benton, John B Jr NEW25Ivan Magalhaes
1030Izzy GarufiBrazil2026-04-02Truhlar And Truhlar Attys UNQUALIFIED18Xuxue Feng
1031Izzy GarufiArgentina2026-04-04Buckley Miller Wright RENEWAL20Ivan Magalhaes
1032David DarakjyIndia2026-04-17Rangoni Of Florence QUALIFIED37Onyama Limba
1033Cody SaylorsItaly2026-04-18Buckley Miller Wright NEW73Onyama Limba
1034David DarakjyAustralia2026-04-11Chanay, Jeffrey A Esq PROPOSAL24Asiya Javayant
1035Morrow RutaFrance2026-03-22Feiner Bros RENEWAL15Amy Elsner
1036Faith GillianIndia2026-04-02Dorl, James J Esq PROPOSAL83Ioni Bowcher
1037Kadeem FlosiRussia2026-04-11Chemel, James L Cpa NEGOTIATION55Onyama Limba
1038James ButtCanada2026-03-31Truhlar And Truhlar Attys PROPOSAL97Bernardo Dominic
1039Kaitlin OstroskyCanada2026-04-16Rousseaux, Michael Esq UNQUALIFIED39Ivan Magalhaes
1040Kaitlin OstroskyItaly2026-04-13Dorl, James J Esq NEGOTIATION7Amy Elsner
1041Julie StensethGermany2026-04-07Chanay, Jeffrey A Esq PROPOSAL68Onyama Limba
1042Mayumi KolmetzArgentina2026-03-26Printing Dimensions QUALIFIED97Bernardo Dominic
1043Izzy GarufiSpain2026-03-25Chanay, Jeffrey A Esq RENEWAL12Amy Elsner
1044Leja CaldareraCanada2026-04-07Benton, John B Jr PROPOSAL77Stephen Shaw
1045Leon OldroydUnited Kingdom2026-04-01Rangoni Of Florence UNQUALIFIED3Ioni Bowcher
1046Wickens NestleBrazil2026-03-23Rousseaux, Michael Esq NEGOTIATION31Anna Fali
1047Faith GillianAustralia2026-04-04Morlong Associates PROPOSAL3Ioni Bowcher
1048Julie StensethGermany2026-04-06Truhlar And Truhlar Attys NEGOTIATION51Bernardo Dominic
1049Emily WhobreyBrazil2026-04-19King, Christopher A Esq RENEWAL33Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Kadeem FlosiGermanyIoni Bowcher UNQUALIFIED
Jefferson SchemmerBrazilElwin Sharvill NEW
Aruna FigeroaJapanStephen Shaw UNQUALIFIED
Julie StensethSpainIoni Bowcher PROPOSAL
Ivar PaprockiArgentinaStephen Shaw UNQUALIFIED
Isabel BowleyAustraliaStephen Shaw UNQUALIFIED
Ivar PaprockiFranceBernardo Dominic NEW
Julie StensethJapanAnna Fali NEGOTIATION
Greenwood BologniaFranceBernardo Dominic PROPOSAL
Wickens NestleJapanIoni Bowcher PROPOSAL
Salvatore StockhamRussiaIvan Magalhaes QUALIFIED
Rodrigues CampainBrazilAsiya Javayant NEGOTIATION
David DarakjyRussiaElwin Sharvill NEGOTIATION
Deepesh ChuiArgentinaIoni Bowcher UNQUALIFIED
James ButtBrazilOnyama Limba PROPOSAL
Murillo MaletGermanyOnyama Limba NEGOTIATION
Ricardo GauchoSpainIoni Bowcher PROPOSAL
Octavia MaletFranceXuxue Feng UNQUALIFIED
Leja CaldareraBrazilAnna Fali NEGOTIATION
Kaitlin OstroskyUnited KingdomElwin Sharvill RENEWAL
Murillo MaletUnited KingdomBernardo Dominic QUALIFIED
Mayumi KolmetzFranceStephen Shaw NEW
Darci PoquetteGermanyAmy Elsner NEW
Izzy GarufiIndiaOnyama Limba PROPOSAL
Stacey MacleadSpainXuxue Feng UNQUALIFIED
Mujtaba NickaCanadaElwin Sharvill NEGOTIATION
Nicolas IturbideItalyElwin Sharvill RENEWAL
Sinclair WaycottJapanAmy Elsner QUALIFIED
Tony FollerUnited KingdomElwin Sharvill PROPOSAL
Rodrigues CampainGermanyXuxue Feng QUALIFIED
Greenwood BologniaUnited KingdomIoni Bowcher PROPOSAL
Julie StensethSpainElwin Sharvill NEGOTIATION
Rodrigues CampainCanadaIoni Bowcher UNQUALIFIED
Faith GillianFranceAsiya Javayant PROPOSAL
Alejandro PerinCanadaElwin Sharvill NEGOTIATION
Morrow RutaBrazilIvan Magalhaes QUALIFIED
Clifford RimFranceOnyama Limba RENEWAL
Francesco ShinkoIndiaXuxue Feng PROPOSAL
Munro FerenczSpainAmy Elsner PROPOSAL
Ashley DoeCanadaBernardo Dominic RENEWAL
Tony FollerUnited KingdomXuxue Feng UNQUALIFIED
Misaki RoysterIndiaIoni Bowcher NEW
Johnson SergiCanadaElwin Sharvill QUALIFIED
Juan WieserJapanOnyama Limba UNQUALIFIED
Chavez BriddickBrazilBernardo Dominic PROPOSAL
Munro FerenczUnited KingdomOnyama Limba QUALIFIED
Octavia MaletArgentinaIoni Bowcher UNQUALIFIED
Silvio SlusarskiCanadaStephen Shaw PROPOSAL
Jefferson SchemmerBrazilAnna Fali PROPOSAL
Jennifer AmigonArgentinaOnyama Limba UNQUALIFIED
Frozen Columns
Name
Emily Whobrey
Tony Foller
Silvio Slusarski
Aruna Figeroa
Antonio Caudy
Leja Caldarera
Kaitlin Ostrosky
Smith Glick
Costa Dilliard
Emily Whobrey
James Butt
Stacey Maclead
Ashley Doe
Cody Saylors
Jennifer Amigon
Silvio Slusarski
Jefferson Schemmer
Salvatore Stockham
Alejandro Perin
Salvatore Stockham
Jones Vocelka
Silvio Slusarski
Jennifer Amigon
Tony Foller
Murillo Malet
Octavia Malet
Aruna Figeroa
Izzy Garufi
Jefferson Schemmer
Francesco Shinko
Jennifer Amigon
Kaitlin Ostrosky
Murillo Malet
Smith Glick
Rodrigues Campain
Rodrigues Campain
Murillo Malet
Tony Foller
Rodrigues Campain
Mujtaba Nicka
Leja Caldarera
Mujtaba Nicka
Mujtaba Nicka
Cody Saylors
Aditya Kusko
Munro Ferencz
Francesco Shinko
Chavez Briddick
Ricardo Gaucho
Jones Vocelka
IdCountryDate
1000Australia2026-03-31
1001Australia2026-03-23
1002Canada2026-04-09
1003Brazil2026-03-27
1004Canada2026-03-30
1005India2026-04-01
1006Russia2026-04-19
1007Argentina2026-04-04
1008Canada2026-04-07
1009Russia2026-04-02
1010Russia2026-03-21
1011Russia2026-04-16
1012United Kingdom2026-04-18
1013Spain2026-03-24
1014France2026-04-10
1015Germany2026-04-06
1016Brazil2026-04-06
1017Italy2026-04-01
1018Russia2026-04-05
1019India2026-04-03
1020Canada2026-03-26
1021United Kingdom2026-03-23
1022Canada2026-04-03
1023Canada2026-04-04
1024Argentina2026-03-24
1025India2026-03-27
1026Spain2026-04-08
1027Canada2026-04-18
1028Italy2026-03-27
1029Japan2026-04-05
1030Russia2026-04-12
1031India2026-03-24
1032Spain2026-04-02
1033Japan2026-03-30
1034Canada2026-04-10
1035Japan2026-04-06
1036Italy2026-04-04
1037Russia2026-04-12
1038France2026-04-16
1039Canada2026-04-08
1040Argentina2026-04-05
1041France2026-03-30
1042Australia2026-04-05
1043Russia2026-04-07
1044United Kingdom2026-03-29
1045United Kingdom2026-04-19
1046France2026-03-22
1047Canada2026-03-26
1048United Kingdom2026-04-19
1049Russia2026-04-16

On-Demand Data

NameIdCountryDate
Alejandro Perin1000Australia2026-04-18
Tony Foller1001Italy2026-04-12
Wickens Nestle1002United Kingdom2026-04-02
Jones Vocelka1003United Kingdom2026-03-28
Chavez Briddick1004Italy2026-03-31
Wickens Nestle1005Australia2026-04-13
Mayumi Kolmetz1006Spain2026-04-15
Johnson Sergi1007Spain2026-03-30
Ricardo Gaucho1008United Kingdom2026-04-07
Juan Wieser1009Spain2026-04-08
Silvio Slusarski1010Japan2026-03-30
Ivar Paprocki1011Australia2026-03-25
Emily Whobrey1012Japan2026-03-25
Munro Ferencz1013Spain2026-04-03
Deepesh Chui1014Canada2026-03-28
Clifford Rim1015Brazil2026-04-12
Murillo Malet1016Argentina2026-04-10
Ivar Paprocki1017India2026-04-19
Deepesh Chui1018Italy2026-03-30
Julie Stenseth1019Brazil2026-04-09
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Mayumi KolmetzAustraliaAmy Elsner RENEWAL
Nicolas IturbideRussiaAnna Fali NEW
Clifford RimJapanOnyama Limba NEW
Kaitlin OstroskyArgentinaElwin Sharvill NEW
Clifford RimRussiaElwin Sharvill UNQUALIFIED
Emily WhobreyItalyXuxue Feng NEW
Faith GillianJapanBernardo Dominic PROPOSAL
Isabel BowleyIndiaIvan Magalhaes NEGOTIATION
Izzy GarufiGermanyOnyama Limba RENEWAL
Salvatore StockhamBrazilXuxue Feng UNQUALIFIED
Isabel BowleyRussiaAmy Elsner RENEWAL
Aditya KuskoFranceIoni Bowcher QUALIFIED
Rodrigues CampainGermanyElwin Sharvill NEGOTIATION
Johnson SergiBrazilOnyama Limba RENEWAL
Isabel BowleyArgentinaBernardo Dominic QUALIFIED
Mayumi KolmetzCanadaStephen Shaw RENEWAL
Rodrigues CampainBrazilAnna Fali NEGOTIATION
Murillo MaletFranceAsiya Javayant QUALIFIED
Wickens NestleArgentinaAsiya Javayant UNQUALIFIED
Faith GillianJapanOnyama Limba NEGOTIATION
Claire TollnerGermanyIvan Magalhaes RENEWAL
Faith GillianIndiaOnyama Limba QUALIFIED
Leja CaldareraBrazilStephen Shaw QUALIFIED
James ButtAustraliaBernardo Dominic NEW
Morrow RutaCanadaAsiya Javayant QUALIFIED
Jefferson SchemmerArgentinaBernardo Dominic UNQUALIFIED
Faith GillianItalyIoni Bowcher PROPOSAL
Deepesh ChuiUnited KingdomStephen Shaw PROPOSAL
Smith GlickJapanIoni Bowcher QUALIFIED
Ricardo GauchoJapanOnyama Limba NEW
Jennifer AmigonIndiaAnna Fali PROPOSAL
Aditya KuskoAustraliaXuxue Feng NEW
Izzy GarufiArgentinaAnna Fali UNQUALIFIED
Leja CaldareraSpainIoni Bowcher RENEWAL
Jones VocelkaBrazilAmy Elsner NEGOTIATION
Silvio SlusarskiBrazilAnna Fali UNQUALIFIED
Jeanfrancois VenereJapanOnyama Limba RENEWAL
Francesco ShinkoSpainXuxue Feng QUALIFIED
Rodrigues CampainAustraliaAmy Elsner RENEWAL
Arvin AlbaresSpainOnyama Limba 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>