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 RENEWAL
Deepesh ChuiAustraliaElwin Sharvill UNQUALIFIED
Clifford RimJapanAmy Elsner UNQUALIFIED
Jennifer AmigonIndiaStephen Shaw UNQUALIFIED
Aditya KuskoJapanStephen Shaw NEW
Clifford RimAustraliaIoni Bowcher NEGOTIATION
Jennifer AmigonIndiaBernardo Dominic NEW
Aika InouyeJapanXuxue Feng NEGOTIATION
Juan WieserBrazilIvan Magalhaes QUALIFIED
Leon OldroydUnited KingdomBernardo Dominic RENEWAL
Leon OldroydGermanyOnyama Limba QUALIFIED
Clifford RimIndiaElwin Sharvill QUALIFIED
Sinclair WaycottFranceAmy Elsner PROPOSAL
Salvatore StockhamGermanyIvan Magalhaes UNQUALIFIED
Antonio CaudyRussiaAsiya Javayant NEW
Antonio CaudyAustraliaIvan Magalhaes RENEWAL
Nicolas IturbideCanadaOnyama Limba UNQUALIFIED
Mayumi KolmetzBrazilStephen Shaw NEW
Morrow RutaCanadaOnyama Limba UNQUALIFIED
Costa DilliardCanadaAnna Fali QUALIFIED
Jones VocelkaJapanXuxue Feng PROPOSAL
Mayumi KolmetzArgentinaAmy Elsner NEW
Octavia MaletCanadaElwin Sharvill PROPOSAL
Kaitlin OstroskySpainIoni Bowcher NEGOTIATION
Tony FollerItalyElwin Sharvill RENEWAL
Johnson SergiUnited KingdomAmy Elsner NEGOTIATION
David DarakjyItalyAsiya Javayant NEW
Silvio SlusarskiSpainAsiya Javayant QUALIFIED
Leon OldroydSpainBernardo Dominic NEGOTIATION
Deepesh ChuiRussiaOnyama Limba QUALIFIED
Adams MorascaJapanBernardo Dominic QUALIFIED
Mayumi KolmetzSpainAnna Fali QUALIFIED
Smith GlickGermanyIvan Magalhaes NEW
Kadeem FlosiBrazilAnna Fali NEGOTIATION
Izzy GarufiFranceAmy Elsner PROPOSAL
Stacey MacleadRussiaIvan Magalhaes NEGOTIATION
Alejandro PerinFranceOnyama Limba QUALIFIED
Arvin AlbaresCanadaIoni Bowcher NEW
Claire TollnerCanadaXuxue Feng UNQUALIFIED
Adams MorascaAustraliaAnna Fali UNQUALIFIED
Ricardo GauchoSpainAsiya Javayant NEGOTIATION
Aika InouyeSpainAsiya Javayant NEW
Arvin AlbaresItalyStephen Shaw RENEWAL
Kadeem FlosiBrazilStephen Shaw PROPOSAL
Smith GlickGermanyIvan Magalhaes RENEWAL
Rodrigues CampainItalyAnna Fali NEGOTIATION
Costa DilliardJapanIvan Magalhaes UNQUALIFIED
Clifford RimBrazilIvan Magalhaes QUALIFIED
Maria MarrierArgentinaAmy Elsner NEGOTIATION
Morrow RutaFranceElwin Sharvill QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Misaki RoysterCanadaAmy Elsner QUALIFIED
Arvin AlbaresRussiaOnyama Limba PROPOSAL
Munro FerenczFranceIvan Magalhaes NEW
Salvatore StockhamAustraliaStephen Shaw UNQUALIFIED
Kaitlin OstroskyRussiaIvan Magalhaes PROPOSAL
Isabel BowleyUnited KingdomOnyama Limba RENEWAL
Ricardo GauchoIndiaIoni Bowcher QUALIFIED
Kadeem FlosiUnited KingdomAsiya Javayant NEGOTIATION
Julie StensethCanadaAmy Elsner PROPOSAL
Claire TollnerFranceAmy Elsner PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Morrow RutaSpain2026-05-11Chapman, Ross E Esq RENEWAL1Bernardo Dominic
1001Salvatore StockhamUnited Kingdom2026-05-04Rousseaux, Michael Esq UNQUALIFIED90Ioni Bowcher
1002Juan WieserGermany2026-05-08Buckley Miller Wright RENEWAL3Onyama Limba
1003Johnson SergiIndia2026-05-17Morlong Associates RENEWAL12Onyama Limba
1004Mayumi KolmetzArgentina2026-04-30Chanay, Jeffrey A Esq UNQUALIFIED10Ivan Magalhaes
1005Maria MarrierUnited Kingdom2026-04-29Benton, John B Jr QUALIFIED67Asiya Javayant
1006Smith GlickAustralia2026-05-15Rousseaux, Michael Esq QUALIFIED57Elwin Sharvill
1007Kaitlin OstroskyJapan2026-04-29Morlong Associates RENEWAL87Amy Elsner
1008Antonio CaudyJapan2026-05-18Benton, John B Jr PROPOSAL90Amy Elsner
1009Ricardo GauchoAustralia2026-05-18Morlong Associates QUALIFIED25Elwin Sharvill
1010Francesco ShinkoArgentina2026-04-24Feltz Printing Service UNQUALIFIED82Bernardo Dominic
1011Arvin AlbaresUnited Kingdom2026-05-01Feiner Bros QUALIFIED73Xuxue Feng
1012Silvio SlusarskiIndia2026-05-12Benton, John B Jr PROPOSAL22Ioni Bowcher
1013Isabel BowleyGermany2026-04-29Chemel, James L Cpa UNQUALIFIED76Ioni Bowcher
1014Salvatore StockhamUnited Kingdom2026-04-27Feiner Bros RENEWAL85Onyama Limba
1015Ashley DoeUnited Kingdom2026-05-22Chanay, Jeffrey A Esq NEW44Ivan Magalhaes
1016Smith GlickArgentina2026-05-14Truhlar And Truhlar Attys QUALIFIED38Asiya Javayant
1017Murillo MaletJapan2026-05-12Dorl, James J Esq QUALIFIED19Bernardo Dominic
1018Nicolas IturbideJapan2026-05-21Printing Dimensions NEGOTIATION34Amy Elsner
1019Darci PoquetteSpain2026-04-29Buckley Miller Wright QUALIFIED84Anna Fali
1020Silvio SlusarskiGermany2026-05-14Feiner Bros PROPOSAL59Stephen Shaw
1021Ashley DoeFrance2026-05-14Dorl, James J Esq NEGOTIATION82Ivan Magalhaes
1022Arvin AlbaresArgentina2026-05-17Printing Dimensions NEGOTIATION77Onyama Limba
1023Costa DilliardItaly2026-05-13Dorl, James J Esq NEW24Bernardo Dominic
1024Murillo MaletCanada2026-05-10Feiner Bros NEW44Ivan Magalhaes
1025Clifford RimAustralia2026-04-25Chapman, Ross E Esq QUALIFIED0Asiya Javayant
1026Faith GillianAustralia2026-05-07Chanay, Jeffrey A Esq NEGOTIATION78Ivan Magalhaes
1027James ButtUnited Kingdom2026-05-16Feiner Bros UNQUALIFIED65Ioni Bowcher
1028Jennifer AmigonFrance2026-05-07Chanay, Jeffrey A Esq NEGOTIATION78Ioni Bowcher
1029Silvio SlusarskiArgentina2026-05-15Chapman, Ross E Esq RENEWAL17Onyama Limba
1030Jones VocelkaJapan2026-05-02Feltz Printing Service QUALIFIED4Xuxue Feng
1031Wickens NestleRussia2026-05-02Printing Dimensions PROPOSAL38Ioni Bowcher
1032Maisha RulapaughJapan2026-05-19Buckley Miller Wright PROPOSAL10Elwin Sharvill
1033Morrow RutaGermany2026-04-29Rangoni Of Florence UNQUALIFIED8Stephen Shaw
1034Munro FerenczFrance2026-05-19Printing Dimensions NEGOTIATION95Ivan Magalhaes
1035Jones VocelkaBrazil2026-04-29Chanay, Jeffrey A Esq QUALIFIED96Amy Elsner
1036Maisha RulapaughCanada2026-04-29Printing Dimensions NEW29Bernardo Dominic
1037Costa DilliardBrazil2026-05-19Chanay, Jeffrey A Esq PROPOSAL80Anna Fali
1038David DarakjyItaly2026-05-19King, Christopher A Esq PROPOSAL64Amy Elsner
1039David DarakjyCanada2026-05-17Chanay, Jeffrey A Esq NEW54Anna Fali
1040Misaki RoysterItaly2026-05-01Truhlar And Truhlar Attys UNQUALIFIED23Anna Fali
1041Octavia MaletAustralia2026-05-23Truhlar And Truhlar Attys NEW23Ivan Magalhaes
1042Claire TollnerBrazil2026-05-01Buckley Miller Wright RENEWAL51Xuxue Feng
1043Julie StensethCanada2026-05-15Benton, John B Jr QUALIFIED11Anna Fali
1044Clifford RimCanada2026-05-17Feiner Bros UNQUALIFIED1Ivan Magalhaes
1045Rodrigues CampainAustralia2026-05-15Rousseaux, Michael Esq NEW43Elwin Sharvill
1046Aika InouyeItaly2026-04-30Truhlar And Truhlar Attys NEGOTIATION12Ivan Magalhaes
1047Kaitlin OstroskyFrance2026-05-15King, Christopher A Esq RENEWAL36Anna Fali
1048Costa DilliardGermany2026-05-17Benton, John B Jr PROPOSAL39Xuxue Feng
1049Chavez BriddickIndia2026-05-14Chanay, Jeffrey A Esq NEGOTIATION47Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Jones VocelkaUnited KingdomIoni Bowcher PROPOSAL
Antonio CaudyArgentinaXuxue Feng UNQUALIFIED
Clifford RimJapanElwin Sharvill NEGOTIATION
Rodrigues CampainRussiaAmy Elsner NEW
Isabel BowleyAustraliaAmy Elsner NEW
Murillo MaletArgentinaElwin Sharvill QUALIFIED
Faith GillianFranceOnyama Limba NEW
Maisha RulapaughSpainOnyama Limba NEW
Kadeem FlosiCanadaStephen Shaw PROPOSAL
Murillo MaletRussiaIoni Bowcher PROPOSAL
Nicolas IturbideArgentinaOnyama Limba UNQUALIFIED
Alejandro PerinItalyAmy Elsner UNQUALIFIED
Misaki RoysterItalyAsiya Javayant QUALIFIED
James ButtJapanBernardo Dominic RENEWAL
Emily WhobreyArgentinaBernardo Dominic UNQUALIFIED
Darci PoquetteUnited KingdomXuxue Feng NEGOTIATION
Jeanfrancois VenereAustraliaAsiya Javayant RENEWAL
Sinclair WaycottArgentinaIoni Bowcher RENEWAL
Antonio CaudyFranceIoni Bowcher UNQUALIFIED
Stacey MacleadSpainIvan Magalhaes NEW
Munro FerenczItalyAsiya Javayant RENEWAL
Kaitlin OstroskyFranceStephen Shaw UNQUALIFIED
Salvatore StockhamCanadaIoni Bowcher PROPOSAL
Ricardo GauchoRussiaIoni Bowcher RENEWAL
Jennifer AmigonJapanIoni Bowcher NEW
Ivar PaprockiArgentinaIvan Magalhaes PROPOSAL
Aruna FigeroaArgentinaIoni Bowcher RENEWAL
Rodrigues CampainArgentinaIoni Bowcher RENEWAL
James ButtGermanyXuxue Feng PROPOSAL
Juan WieserRussiaOnyama Limba PROPOSAL
Alejandro PerinRussiaStephen Shaw NEW
Tony FollerJapanOnyama Limba NEGOTIATION
Stacey MacleadAustraliaStephen Shaw QUALIFIED
Tony FollerItalyStephen Shaw UNQUALIFIED
Jones VocelkaFranceElwin Sharvill NEGOTIATION
Silvio SlusarskiRussiaAnna Fali NEGOTIATION
Munro FerenczItalyIoni Bowcher PROPOSAL
Silvio SlusarskiJapanStephen Shaw RENEWAL
Deepesh ChuiItalyIoni Bowcher RENEWAL
Ricardo GauchoJapanIoni Bowcher PROPOSAL
Morrow RutaCanadaXuxue Feng PROPOSAL
Ashley DoeBrazilStephen Shaw PROPOSAL
Clifford RimGermanyIvan Magalhaes NEGOTIATION
Deepesh ChuiJapanIoni Bowcher NEGOTIATION
Ivar PaprockiItalyBernardo Dominic UNQUALIFIED
Antonio CaudyItalyIvan Magalhaes QUALIFIED
Alejandro PerinCanadaAsiya Javayant RENEWAL
James ButtIndiaStephen Shaw NEGOTIATION
Francesco ShinkoRussiaIoni Bowcher NEW
Maisha RulapaughItalyXuxue Feng RENEWAL
Frozen Columns
Name
Adams Morasca
Ricardo Gaucho
Darci Poquette
Jones Vocelka
Rodrigues Campain
Jones Vocelka
Clifford Rim
Emily Whobrey
Mujtaba Nicka
Clifford Rim
Emily Whobrey
Isabel Bowley
Chavez Briddick
David Darakjy
Ashley Doe
Alejandro Perin
Aditya Kusko
Aika Inouye
Jeanfrancois Venere
Juan Wieser
Maria Marrier
Morrow Ruta
Juan Wieser
Ivar Paprocki
Salvatore Stockham
Izzy Garufi
Deepesh Chui
Antonio Caudy
Maria Marrier
Salvatore Stockham
Darci Poquette
Johnson Sergi
Arvin Albares
Alejandro Perin
Antonio Caudy
Kaitlin Ostrosky
Johnson Sergi
Johnson Sergi
Aruna Figeroa
Sinclair Waycott
Rodrigues Campain
Emily Whobrey
Mujtaba Nicka
Ricardo Gaucho
Nicolas Iturbide
Misaki Royster
Tony Foller
Misaki Royster
Chavez Briddick
Johnson Sergi
IdCountryDate
1000Brazil2026-04-28
1001United Kingdom2026-05-21
1002Italy2026-04-24
1003Spain2026-04-30
1004United Kingdom2026-04-25
1005Australia2026-05-09
1006United Kingdom2026-05-06
1007Argentina2026-04-24
1008Spain2026-05-09
1009Italy2026-05-13
1010Brazil2026-04-26
1011France2026-05-20
1012Australia2026-05-20
1013India2026-05-13
1014France2026-05-06
1015Spain2026-05-19
1016Argentina2026-04-25
1017Italy2026-05-18
1018Brazil2026-05-16
1019Australia2026-05-13
1020Japan2026-04-28
1021Italy2026-04-28
1022Argentina2026-04-28
1023Russia2026-05-06
1024Japan2026-05-19
1025Italy2026-05-12
1026Italy2026-05-14
1027Japan2026-05-13
1028United Kingdom2026-05-17
1029Italy2026-05-01
1030Italy2026-05-17
1031India2026-04-24
1032Brazil2026-04-29
1033United Kingdom2026-05-12
1034France2026-04-24
1035Germany2026-04-26
1036Spain2026-05-12
1037Germany2026-05-08
1038India2026-05-20
1039Argentina2026-05-20
1040Germany2026-04-29
1041France2026-05-19
1042Germany2026-05-07
1043Spain2026-04-27
1044Russia2026-05-02
1045Australia2026-05-18
1046Australia2026-05-05
1047Italy2026-05-19
1048France2026-05-18
1049France2026-05-04

On-Demand Data

NameIdCountryDate
Antonio Caudy1000Australia2026-05-02
Ricardo Gaucho1001United Kingdom2026-05-13
Morrow Ruta1002France2026-05-09
Tony Foller1003Russia2026-05-09
Nicolas Iturbide1004Japan2026-05-05
James Butt1005Brazil2026-05-08
Alejandro Perin1006Japan2026-05-05
Jones Vocelka1007United Kingdom2026-04-30
Antonio Caudy1008Australia2026-04-27
Izzy Garufi1009Italy2026-05-02
Wickens Nestle1010Spain2026-04-26
Antonio Caudy1011United Kingdom2026-04-26
Misaki Royster1012India2026-05-10
Murillo Malet1013Italy2026-05-01
Leon Oldroyd1014Germany2026-05-13
Maria Marrier1015Canada2026-05-16
Mujtaba Nicka1016Germany2026-04-25
Tony Foller1017Japan2026-05-17
Juan Wieser1018Russia2026-05-23
Francesco Shinko1019Spain2026-05-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Greenwood BologniaArgentinaAnna Fali PROPOSAL
James ButtBrazilAmy Elsner UNQUALIFIED
Misaki RoysterIndiaIoni Bowcher NEGOTIATION
Maisha RulapaughIndiaAsiya Javayant NEGOTIATION
Jennifer AmigonArgentinaOnyama Limba NEW
Deepesh ChuiAustraliaXuxue Feng PROPOSAL
Cody SaylorsCanadaAsiya Javayant PROPOSAL
Jennifer AmigonCanadaAnna Fali PROPOSAL
Mayumi KolmetzIndiaElwin Sharvill PROPOSAL
Aika InouyeGermanyAsiya Javayant QUALIFIED
Adams MorascaFranceOnyama Limba PROPOSAL
Leon OldroydSpainOnyama Limba NEGOTIATION
Ashley DoeCanadaElwin Sharvill RENEWAL
Aruna FigeroaUnited KingdomAsiya Javayant NEGOTIATION
Sinclair WaycottBrazilAsiya Javayant UNQUALIFIED
Deepesh ChuiFranceIvan Magalhaes NEW
Izzy GarufiBrazilBernardo Dominic QUALIFIED
Greenwood BologniaRussiaAsiya Javayant NEGOTIATION
Maisha RulapaughSpainStephen Shaw UNQUALIFIED
Adams MorascaAustraliaAmy Elsner QUALIFIED
Mayumi KolmetzCanadaIvan Magalhaes RENEWAL
Chavez BriddickIndiaIoni Bowcher NEW
Cody SaylorsIndiaStephen Shaw UNQUALIFIED
Arvin AlbaresIndiaAnna Fali RENEWAL
Arvin AlbaresGermanyXuxue Feng RENEWAL
Faith GillianCanadaAsiya Javayant NEGOTIATION
Chavez BriddickBrazilAnna Fali NEW
Jennifer AmigonAustraliaAmy Elsner RENEWAL
Munro FerenczArgentinaOnyama Limba UNQUALIFIED
Juan WieserBrazilAmy Elsner UNQUALIFIED
Aruna FigeroaAustraliaStephen Shaw RENEWAL
Mayumi KolmetzArgentinaBernardo Dominic RENEWAL
Ashley DoeSpainIvan Magalhaes QUALIFIED
Darci PoquetteGermanyAsiya Javayant QUALIFIED
Ricardo GauchoGermanyElwin Sharvill NEGOTIATION
Izzy GarufiCanadaAnna Fali NEW
Jeanfrancois VenereBrazilElwin Sharvill QUALIFIED
Ivar PaprockiSpainElwin Sharvill QUALIFIED
Mayumi KolmetzAustraliaAsiya Javayant RENEWAL
Isabel BowleyCanadaXuxue Feng 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>