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
Juan WieserJapanIoni Bowcher QUALIFIED
Jennifer AmigonGermanyStephen Shaw QUALIFIED
Arvin AlbaresJapanOnyama Limba QUALIFIED
Izzy GarufiRussiaAsiya Javayant RENEWAL
Claire TollnerFranceElwin Sharvill UNQUALIFIED
Stacey MacleadFranceXuxue Feng RENEWAL
Ashley DoeAustraliaBernardo Dominic NEGOTIATION
Aruna FigeroaFranceAnna Fali RENEWAL
Leon OldroydJapanAsiya Javayant QUALIFIED
Izzy GarufiFranceAnna Fali PROPOSAL
Chavez BriddickJapanIvan Magalhaes UNQUALIFIED
Cody SaylorsArgentinaBernardo Dominic NEGOTIATION
Deepesh ChuiFranceIoni Bowcher NEW
Aruna FigeroaFranceAmy Elsner RENEWAL
Mujtaba NickaUnited KingdomAnna Fali PROPOSAL
Julie StensethArgentinaAsiya Javayant UNQUALIFIED
Faith GillianAustraliaOnyama Limba RENEWAL
Wickens NestleIndiaAmy Elsner RENEWAL
Silvio SlusarskiUnited KingdomIvan Magalhaes RENEWAL
Darci PoquetteIndiaAmy Elsner NEGOTIATION
Jefferson SchemmerBrazilElwin Sharvill PROPOSAL
Clifford RimArgentinaAsiya Javayant UNQUALIFIED
Leon OldroydGermanyAsiya Javayant QUALIFIED
Octavia MaletItalyStephen Shaw PROPOSAL
Tony FollerIndiaXuxue Feng NEW
Smith GlickCanadaXuxue Feng NEGOTIATION
Octavia MaletItalyAmy Elsner NEW
Munro FerenczArgentinaIoni Bowcher NEGOTIATION
Clifford RimBrazilAsiya Javayant NEW
David DarakjyArgentinaAsiya Javayant UNQUALIFIED
Ivar PaprockiUnited KingdomAsiya Javayant NEW
Jeanfrancois VenereUnited KingdomStephen Shaw NEGOTIATION
Arvin AlbaresFranceIoni Bowcher RENEWAL
Juan WieserBrazilIoni Bowcher PROPOSAL
Antonio CaudyUnited KingdomAmy Elsner NEGOTIATION
Cody SaylorsSpainIoni Bowcher NEGOTIATION
Alejandro PerinAustraliaAsiya Javayant NEW
Mayumi KolmetzFranceIoni Bowcher RENEWAL
Antonio CaudyBrazilAmy Elsner RENEWAL
Leja CaldareraCanadaStephen Shaw QUALIFIED
Claire TollnerBrazilAmy Elsner UNQUALIFIED
Maria MarrierSpainXuxue Feng NEGOTIATION
Emily WhobreyUnited KingdomAnna Fali QUALIFIED
Smith GlickGermanyAmy Elsner PROPOSAL
Kaitlin OstroskyArgentinaAnna Fali NEW
Morrow RutaArgentinaIoni Bowcher PROPOSAL
Salvatore StockhamCanadaIoni Bowcher NEGOTIATION
Clifford RimItalyIoni Bowcher NEW
Murillo MaletGermanyAnna Fali NEGOTIATION
Alejandro PerinItalyElwin Sharvill PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Aruna FigeroaFranceOnyama Limba NEGOTIATION
Chavez BriddickItalyIoni Bowcher PROPOSAL
Juan WieserSpainBernardo Dominic PROPOSAL
Misaki RoysterFranceXuxue Feng RENEWAL
Arvin AlbaresCanadaIvan Magalhaes UNQUALIFIED
Salvatore StockhamIndiaAsiya Javayant UNQUALIFIED
James ButtIndiaStephen Shaw NEGOTIATION
David DarakjyCanadaAsiya Javayant RENEWAL
Jennifer AmigonArgentinaIoni Bowcher PROPOSAL
James ButtIndiaAnna Fali NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Silvio SlusarskiGermany2026-05-09Commercial Press PROPOSAL25Onyama Limba
1001Maisha RulapaughRussia2026-06-01Chapman, Ross E Esq RENEWAL72Ivan Magalhaes
1002Mayumi KolmetzUnited Kingdom2026-05-24Morlong Associates UNQUALIFIED56Onyama Limba
1003Wickens NestleSpain2026-05-27Buckley Miller Wright NEW36Bernardo Dominic
1004Jeanfrancois VenereArgentina2026-05-11Printing Dimensions RENEWAL58Elwin Sharvill
1005Silvio SlusarskiGermany2026-05-25Benton, John B Jr NEGOTIATION55Anna Fali
1006Julie StensethBrazil2026-05-20King, Christopher A Esq QUALIFIED62Stephen Shaw
1007Ashley DoeSpain2026-05-27Commercial Press RENEWAL7Amy Elsner
1008Stacey MacleadBrazil2026-05-11Chemel, James L Cpa PROPOSAL99Ivan Magalhaes
1009Cody SaylorsArgentina2026-05-26Rangoni Of Florence NEGOTIATION71Elwin Sharvill
1010Mayumi KolmetzAustralia2026-05-06Dorl, James J Esq PROPOSAL55Bernardo Dominic
1011Izzy GarufiRussia2026-05-22Commercial Press PROPOSAL99Elwin Sharvill
1012Leja CaldareraJapan2026-05-17Dorl, James J Esq NEW28Ioni Bowcher
1013Silvio SlusarskiArgentina2026-05-09Buckley Miller Wright UNQUALIFIED93Xuxue Feng
1014Greenwood BologniaJapan2026-05-19Morlong Associates UNQUALIFIED63Bernardo Dominic
1015Munro FerenczAustralia2026-05-20Dorl, James J Esq NEGOTIATION36Xuxue Feng
1016Stacey MacleadUnited Kingdom2026-05-24Rousseaux, Michael Esq QUALIFIED99Stephen Shaw
1017Smith GlickCanada2026-06-01Buckley Miller Wright QUALIFIED86Anna Fali
1018Darci PoquetteIndia2026-05-17Chanay, Jeffrey A Esq NEW14Bernardo Dominic
1019Claire TollnerArgentina2026-05-30Feltz Printing Service PROPOSAL48Xuxue Feng
1020Arvin AlbaresRussia2026-05-30Dorl, James J Esq NEW87Stephen Shaw
1021Costa DilliardArgentina2026-05-23Buckley Miller Wright NEGOTIATION83Elwin Sharvill
1022Claire TollnerBrazil2026-05-25Benton, John B Jr NEW22Amy Elsner
1023Maria MarrierIndia2026-06-02Dorl, James J Esq UNQUALIFIED0Asiya Javayant
1024James ButtUnited Kingdom2026-05-16Rangoni Of Florence UNQUALIFIED0Stephen Shaw
1025Ricardo GauchoBrazil2026-05-29Rangoni Of Florence QUALIFIED82Elwin Sharvill
1026Izzy GarufiItaly2026-05-22Benton, John B Jr NEW33Asiya Javayant
1027Arvin AlbaresIndia2026-06-01Feiner Bros NEGOTIATION75Amy Elsner
1028Mujtaba NickaAustralia2026-05-18Buckley Miller Wright NEGOTIATION69Elwin Sharvill
1029Kadeem FlosiUnited Kingdom2026-05-12Printing Dimensions RENEWAL13Amy Elsner
1030Jeanfrancois VenereSpain2026-05-11Buckley Miller Wright RENEWAL90Onyama Limba
1031Sinclair WaycottCanada2026-06-04Chanay, Jeffrey A Esq NEGOTIATION34Anna Fali
1032Wickens NestleSpain2026-06-04Rousseaux, Michael Esq NEW53Amy Elsner
1033Claire TollnerSpain2026-05-07Truhlar And Truhlar Attys NEW33Ivan Magalhaes
1034David DarakjyGermany2026-05-14Feiner Bros NEW35Elwin Sharvill
1035Nicolas IturbideBrazil2026-05-10Feltz Printing Service UNQUALIFIED21Ioni Bowcher
1036Juan WieserGermany2026-05-15Rangoni Of Florence NEW7Bernardo Dominic
1037Chavez BriddickRussia2026-05-30Truhlar And Truhlar Attys NEGOTIATION62Xuxue Feng
1038Jeanfrancois VenereAustralia2026-05-19Morlong Associates RENEWAL36Xuxue Feng
1039Greenwood BologniaItaly2026-05-13Printing Dimensions NEW28Elwin Sharvill
1040Murillo MaletArgentina2026-05-19Benton, John B Jr RENEWAL57Anna Fali
1041Arvin AlbaresBrazil2026-05-13Chanay, Jeffrey A Esq NEW20Ioni Bowcher
1042Jefferson SchemmerRussia2026-05-12Chapman, Ross E Esq NEW11Ivan Magalhaes
1043Aruna FigeroaArgentina2026-05-08Rangoni Of Florence NEW45Elwin Sharvill
1044Faith GillianIndia2026-05-21Chapman, Ross E Esq PROPOSAL64Asiya Javayant
1045Leja CaldareraIndia2026-05-10Chapman, Ross E Esq QUALIFIED29Onyama Limba
1046Clifford RimAustralia2026-05-31Feltz Printing Service NEGOTIATION89Onyama Limba
1047Kaitlin OstroskyFrance2026-05-28Morlong Associates QUALIFIED28Onyama Limba
1048Tony FollerCanada2026-05-09Feltz Printing Service RENEWAL46Xuxue Feng
1049Jeanfrancois VenereSpain2026-05-25Rousseaux, Michael Esq UNQUALIFIED61Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Maisha RulapaughGermanyStephen Shaw NEW
Emily WhobreyGermanyAsiya Javayant QUALIFIED
Julie StensethFranceOnyama Limba PROPOSAL
Mayumi KolmetzRussiaXuxue Feng PROPOSAL
Stacey MacleadAustraliaAsiya Javayant NEW
Alejandro PerinBrazilBernardo Dominic RENEWAL
Julie StensethBrazilAnna Fali UNQUALIFIED
Deepesh ChuiRussiaElwin Sharvill NEW
Francesco ShinkoArgentinaOnyama Limba NEGOTIATION
Darci PoquetteSpainAmy Elsner UNQUALIFIED
Julie StensethAustraliaAsiya Javayant QUALIFIED
Aruna FigeroaAustraliaAnna Fali NEGOTIATION
Aika InouyeArgentinaAmy Elsner UNQUALIFIED
Maisha RulapaughItalyAsiya Javayant NEGOTIATION
Costa DilliardGermanyStephen Shaw RENEWAL
Isabel BowleyRussiaIvan Magalhaes NEGOTIATION
Juan WieserAustraliaAmy Elsner NEGOTIATION
Jeanfrancois VenereArgentinaIoni Bowcher NEGOTIATION
Rodrigues CampainCanadaBernardo Dominic QUALIFIED
Munro FerenczIndiaIoni Bowcher NEGOTIATION
Salvatore StockhamItalyAsiya Javayant QUALIFIED
Aika InouyeFranceAsiya Javayant PROPOSAL
Maria MarrierArgentinaBernardo Dominic PROPOSAL
Jefferson SchemmerSpainElwin Sharvill QUALIFIED
Clifford RimAustraliaStephen Shaw PROPOSAL
Deepesh ChuiCanadaAsiya Javayant UNQUALIFIED
Claire TollnerAustraliaIvan Magalhaes QUALIFIED
Mujtaba NickaFranceXuxue Feng PROPOSAL
Izzy GarufiAustraliaAmy Elsner PROPOSAL
Deepesh ChuiGermanyAsiya Javayant UNQUALIFIED
Chavez BriddickSpainAnna Fali NEGOTIATION
Maisha RulapaughRussiaIoni Bowcher PROPOSAL
Nicolas IturbideFranceAsiya Javayant QUALIFIED
Mayumi KolmetzRussiaOnyama Limba NEGOTIATION
Costa DilliardUnited KingdomAnna Fali RENEWAL
Nicolas IturbideCanadaAmy Elsner PROPOSAL
Kaitlin OstroskyJapanOnyama Limba NEW
Maisha RulapaughCanadaBernardo Dominic RENEWAL
Isabel BowleyFranceElwin Sharvill UNQUALIFIED
Costa DilliardJapanIoni Bowcher PROPOSAL
Maisha RulapaughRussiaAmy Elsner QUALIFIED
Jefferson SchemmerItalyAsiya Javayant UNQUALIFIED
Nicolas IturbideFranceAmy Elsner NEGOTIATION
Leon OldroydRussiaElwin Sharvill QUALIFIED
Rodrigues CampainAustraliaStephen Shaw UNQUALIFIED
Stacey MacleadGermanyIvan Magalhaes NEGOTIATION
Kadeem FlosiFranceXuxue Feng RENEWAL
Leon OldroydAustraliaXuxue Feng UNQUALIFIED
Ashley DoeRussiaStephen Shaw UNQUALIFIED
Jennifer AmigonUnited KingdomAsiya Javayant UNQUALIFIED
Frozen Columns
Name
Smith Glick
Jones Vocelka
Leon Oldroyd
Tony Foller
Tony Foller
Cody Saylors
Kaitlin Ostrosky
Faith Gillian
Aika Inouye
Aika Inouye
Ivar Paprocki
James Butt
Juan Wieser
Alejandro Perin
Jeanfrancois Venere
Munro Ferencz
Costa Dilliard
Wickens Nestle
Murillo Malet
Morrow Ruta
Emily Whobrey
Aruna Figeroa
Sinclair Waycott
James Butt
Aruna Figeroa
Salvatore Stockham
Leja Caldarera
Claire Tollner
Silvio Slusarski
Juan Wieser
Costa Dilliard
Aika Inouye
Darci Poquette
Claire Tollner
Misaki Royster
Arvin Albares
Darci Poquette
David Darakjy
Isabel Bowley
Juan Wieser
Faith Gillian
Maria Marrier
Octavia Malet
Aruna Figeroa
Deepesh Chui
Johnson Sergi
Maria Marrier
Mayumi Kolmetz
David Darakjy
Ashley Doe
IdCountryDate
1000Spain2026-05-30
1001India2026-05-08
1002India2026-06-04
1003Germany2026-05-28
1004Russia2026-05-12
1005Brazil2026-05-09
1006Australia2026-05-17
1007Brazil2026-05-20
1008France2026-05-18
1009Australia2026-06-02
1010Italy2026-05-27
1011Germany2026-05-25
1012Canada2026-05-27
1013United Kingdom2026-05-17
1014Australia2026-05-10
1015Argentina2026-05-23
1016Russia2026-05-14
1017Germany2026-05-11
1018Argentina2026-05-13
1019Germany2026-05-30
1020Germany2026-06-02
1021Germany2026-05-31
1022France2026-05-22
1023India2026-05-20
1024Germany2026-05-26
1025United Kingdom2026-06-03
1026Japan2026-05-19
1027Japan2026-05-10
1028India2026-05-23
1029Canada2026-05-12
1030Spain2026-05-21
1031Italy2026-05-14
1032India2026-05-26
1033Spain2026-05-11
1034Russia2026-05-09
1035India2026-05-29
1036France2026-05-17
1037Canada2026-05-20
1038Japan2026-05-08
1039Brazil2026-05-11
1040Italy2026-05-15
1041Spain2026-05-28
1042France2026-05-24
1043Canada2026-05-14
1044Australia2026-05-10
1045Canada2026-05-22
1046Canada2026-05-16
1047United Kingdom2026-05-13
1048France2026-05-29
1049Italy2026-05-11

On-Demand Data

NameIdCountryDate
Salvatore Stockham1000Canada2026-05-16
Mujtaba Nicka1001Japan2026-06-01
Leja Caldarera1002Russia2026-05-21
Jones Vocelka1003Germany2026-06-02
James Butt1004Canada2026-05-13
Jeanfrancois Venere1005Brazil2026-05-17
Leja Caldarera1006Canada2026-05-23
Claire Tollner1007Spain2026-05-07
Maisha Rulapaugh1008India2026-05-06
Nicolas Iturbide1009Russia2026-06-04
James Butt1010Canada2026-05-29
Ashley Doe1011Germany2026-05-21
Kaitlin Ostrosky1012Germany2026-06-04
Ashley Doe1013Brazil2026-06-04
Ashley Doe1014France2026-05-08
Antonio Caudy1015Australia2026-05-22
Stacey Maclead1016Italy2026-05-28
Munro Ferencz1017Russia2026-05-10
Faith Gillian1018Brazil2026-05-08
Aditya Kusko1019Russia2026-06-03
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
James ButtAustraliaXuxue Feng UNQUALIFIED
Alejandro PerinFranceXuxue Feng QUALIFIED
Jones VocelkaBrazilAmy Elsner QUALIFIED
David DarakjyBrazilAnna Fali RENEWAL
Munro FerenczJapanStephen Shaw PROPOSAL
Kaitlin OstroskySpainXuxue Feng QUALIFIED
Greenwood BologniaItalyAsiya Javayant NEW
Claire TollnerArgentinaOnyama Limba NEW
Darci PoquetteJapanAmy Elsner NEGOTIATION
Stacey MacleadRussiaBernardo Dominic RENEWAL
Kaitlin OstroskyJapanAmy Elsner NEGOTIATION
Francesco ShinkoJapanIoni Bowcher RENEWAL
Aruna FigeroaGermanyAmy Elsner QUALIFIED
Antonio CaudyCanadaAsiya Javayant NEW
Leja CaldareraUnited KingdomIvan Magalhaes NEW
Emily WhobreyUnited KingdomIoni Bowcher UNQUALIFIED
Isabel BowleyJapanBernardo Dominic QUALIFIED
Antonio CaudyJapanOnyama Limba UNQUALIFIED
Wickens NestleJapanAmy Elsner QUALIFIED
Clifford RimCanadaOnyama Limba NEW
Isabel BowleyItalyStephen Shaw NEGOTIATION
Isabel BowleySpainAsiya Javayant NEW
Izzy GarufiSpainBernardo Dominic PROPOSAL
David DarakjyItalyIoni Bowcher RENEWAL
Kaitlin OstroskyArgentinaAmy Elsner NEGOTIATION
Smith GlickItalyIvan Magalhaes QUALIFIED
Leja CaldareraIndiaElwin Sharvill QUALIFIED
Nicolas IturbideAustraliaAnna Fali QUALIFIED
Mujtaba NickaArgentinaAnna Fali NEW
Stacey MacleadSpainIvan Magalhaes PROPOSAL
Mayumi KolmetzCanadaXuxue Feng NEGOTIATION
Maisha RulapaughSpainIoni Bowcher QUALIFIED
Francesco ShinkoSpainIoni Bowcher NEW
Jeanfrancois VenereCanadaBernardo Dominic QUALIFIED
David DarakjyIndiaAnna Fali RENEWAL
Kadeem FlosiBrazilAsiya Javayant NEGOTIATION
Greenwood BologniaAustraliaAsiya Javayant NEGOTIATION
Francesco ShinkoGermanyAsiya Javayant NEGOTIATION
Sinclair WaycottSpainXuxue Feng QUALIFIED
Nicolas IturbideAustraliaAmy Elsner RENEWAL

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