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
Claire TollnerArgentinaStephen Shaw UNQUALIFIED
Clifford RimIndiaOnyama Limba NEGOTIATION
Julie StensethIndiaAsiya Javayant PROPOSAL
Julie StensethBrazilIvan Magalhaes RENEWAL
Julie StensethAustraliaOnyama Limba UNQUALIFIED
Isabel BowleyFranceOnyama Limba UNQUALIFIED
Octavia MaletGermanyAnna Fali NEGOTIATION
Leja CaldareraJapanOnyama Limba PROPOSAL
Isabel BowleySpainElwin Sharvill QUALIFIED
Jeanfrancois VenereFranceElwin Sharvill RENEWAL
Chavez BriddickArgentinaOnyama Limba RENEWAL
Cody SaylorsSpainXuxue Feng PROPOSAL
Wickens NestleFranceXuxue Feng PROPOSAL
Ivar PaprockiBrazilBernardo Dominic NEGOTIATION
Sinclair WaycottCanadaOnyama Limba QUALIFIED
Juan WieserItalyAmy Elsner NEW
Sinclair WaycottFranceAsiya Javayant UNQUALIFIED
Jeanfrancois VenereJapanOnyama Limba PROPOSAL
Munro FerenczAustraliaAsiya Javayant UNQUALIFIED
Antonio CaudyBrazilAsiya Javayant UNQUALIFIED
Octavia MaletJapanXuxue Feng RENEWAL
Jefferson SchemmerItalyOnyama Limba UNQUALIFIED
Murillo MaletSpainStephen Shaw QUALIFIED
Rodrigues CampainIndiaStephen Shaw UNQUALIFIED
Arvin AlbaresItalyXuxue Feng QUALIFIED
Smith GlickJapanAsiya Javayant UNQUALIFIED
Kadeem FlosiAustraliaBernardo Dominic PROPOSAL
Izzy GarufiCanadaIoni Bowcher PROPOSAL
Aruna FigeroaArgentinaIoni Bowcher PROPOSAL
Deepesh ChuiRussiaElwin Sharvill NEGOTIATION
Johnson SergiGermanyXuxue Feng NEGOTIATION
Jefferson SchemmerFranceAnna Fali PROPOSAL
Isabel BowleyUnited KingdomAsiya Javayant QUALIFIED
James ButtSpainAmy Elsner QUALIFIED
Salvatore StockhamSpainOnyama Limba NEGOTIATION
Chavez BriddickUnited KingdomBernardo Dominic NEGOTIATION
Jennifer AmigonUnited KingdomElwin Sharvill UNQUALIFIED
Octavia MaletGermanyBernardo Dominic NEW
David DarakjyUnited KingdomOnyama Limba PROPOSAL
Ricardo GauchoIndiaAmy Elsner PROPOSAL
Cody SaylorsSpainIoni Bowcher QUALIFIED
Faith GillianCanadaBernardo Dominic NEGOTIATION
Smith GlickUnited KingdomAmy Elsner NEGOTIATION
Salvatore StockhamBrazilStephen Shaw PROPOSAL
Jones VocelkaFranceStephen Shaw PROPOSAL
Sinclair WaycottIndiaXuxue Feng QUALIFIED
Kadeem FlosiArgentinaAsiya Javayant QUALIFIED
James ButtIndiaXuxue Feng UNQUALIFIED
Octavia MaletFranceOnyama Limba RENEWAL
Ricardo GauchoRussiaIoni Bowcher RENEWAL
Horizontal
NameCountryRepresentativeStatus
Isabel BowleyIndiaAmy Elsner NEGOTIATION
Alejandro PerinArgentinaAsiya Javayant PROPOSAL
Chavez BriddickRussiaStephen Shaw NEW
Greenwood BologniaSpainOnyama Limba NEGOTIATION
Ashley DoeJapanAmy Elsner PROPOSAL
Greenwood BologniaAustraliaStephen Shaw NEW
Silvio SlusarskiFranceBernardo Dominic PROPOSAL
Sinclair WaycottArgentinaAmy Elsner NEW
Maisha RulapaughItalyIoni Bowcher QUALIFIED
Cody SaylorsSpainIoni Bowcher UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leon OldroydBrazil2026-04-11Morlong Associates PROPOSAL69Ioni Bowcher
1001Jennifer AmigonIndia2026-04-22Chapman, Ross E Esq UNQUALIFIED96Stephen Shaw
1002Aika InouyeItaly2026-04-29Truhlar And Truhlar Attys QUALIFIED67Stephen Shaw
1003Mayumi KolmetzItaly2026-04-14Printing Dimensions NEW76Amy Elsner
1004Ashley DoeUnited Kingdom2026-05-04Chanay, Jeffrey A Esq UNQUALIFIED84Xuxue Feng
1005Jeanfrancois VenereBrazil2026-05-07Commercial Press PROPOSAL94Onyama Limba
1006Greenwood BologniaCanada2026-04-12King, Christopher A Esq QUALIFIED1Anna Fali
1007Morrow RutaFrance2026-04-18Chemel, James L Cpa RENEWAL31Anna Fali
1008Johnson SergiSpain2026-05-07Chanay, Jeffrey A Esq NEGOTIATION15Xuxue Feng
1009Leja CaldareraRussia2026-04-28Dorl, James J Esq PROPOSAL96Onyama Limba
1010Nicolas IturbideCanada2026-04-30Morlong Associates QUALIFIED1Ioni Bowcher
1011Mayumi KolmetzFrance2026-04-26Truhlar And Truhlar Attys NEGOTIATION3Bernardo Dominic
1012Octavia MaletItaly2026-04-22Chapman, Ross E Esq NEGOTIATION13Ioni Bowcher
1013Aditya KuskoFrance2026-04-17Chapman, Ross E Esq UNQUALIFIED63Amy Elsner
1014Tony FollerBrazil2026-04-26Dorl, James J Esq UNQUALIFIED62Stephen Shaw
1015Mujtaba NickaArgentina2026-04-16Buckley Miller Wright NEGOTIATION6Anna Fali
1016Greenwood BologniaItaly2026-04-13Chapman, Ross E Esq QUALIFIED12Asiya Javayant
1017Isabel BowleySpain2026-04-21Dorl, James J Esq UNQUALIFIED29Elwin Sharvill
1018Deepesh ChuiArgentina2026-05-08Chemel, James L Cpa UNQUALIFIED57Ivan Magalhaes
1019Chavez BriddickCanada2026-04-11Rousseaux, Michael Esq PROPOSAL83Xuxue Feng
1020Leja CaldareraArgentina2026-04-13Printing Dimensions RENEWAL79Elwin Sharvill
1021Antonio CaudyCanada2026-04-23Rousseaux, Michael Esq PROPOSAL43Anna Fali
1022Deepesh ChuiCanada2026-04-20Benton, John B Jr QUALIFIED43Onyama Limba
1023Octavia MaletAustralia2026-05-10Buckley Miller Wright QUALIFIED97Ioni Bowcher
1024Jefferson SchemmerIndia2026-04-13Buckley Miller Wright NEW1Ivan Magalhaes
1025Smith GlickSpain2026-04-24Morlong Associates NEW97Stephen Shaw
1026Jennifer AmigonAustralia2026-05-03Buckley Miller Wright PROPOSAL9Onyama Limba
1027Rodrigues CampainCanada2026-05-01Chanay, Jeffrey A Esq PROPOSAL11Anna Fali
1028Greenwood BologniaFrance2026-04-17Buckley Miller Wright QUALIFIED92Onyama Limba
1029Cody SaylorsItaly2026-04-21Feiner Bros UNQUALIFIED44Anna Fali
1030Greenwood BologniaAustralia2026-05-04Benton, John B Jr NEGOTIATION61Ivan Magalhaes
1031Octavia MaletFrance2026-05-04Printing Dimensions QUALIFIED77Amy Elsner
1032Johnson SergiCanada2026-04-12Rousseaux, Michael Esq NEW68Asiya Javayant
1033Arvin AlbaresArgentina2026-05-03Dorl, James J Esq NEW13Elwin Sharvill
1034Costa DilliardUnited Kingdom2026-04-29Printing Dimensions NEGOTIATION75Asiya Javayant
1035Jeanfrancois VenereGermany2026-04-14Feiner Bros UNQUALIFIED3Amy Elsner
1036Misaki RoysterGermany2026-04-17Commercial Press NEGOTIATION39Xuxue Feng
1037Smith GlickCanada2026-04-24Printing Dimensions PROPOSAL58Onyama Limba
1038Deepesh ChuiCanada2026-04-21Chapman, Ross E Esq RENEWAL17Ivan Magalhaes
1039Ricardo GauchoUnited Kingdom2026-05-09Feiner Bros UNQUALIFIED38Bernardo Dominic
1040Murillo MaletSpain2026-04-30Chemel, James L Cpa NEW38Bernardo Dominic
1041Ivar PaprockiSpain2026-05-08Morlong Associates UNQUALIFIED74Onyama Limba
1042Leja CaldareraFrance2026-05-08Rangoni Of Florence NEW72Asiya Javayant
1043Sinclair WaycottCanada2026-05-04Rousseaux, Michael Esq NEW92Bernardo Dominic
1044Kadeem FlosiUnited Kingdom2026-05-01Commercial Press NEW19Anna Fali
1045Darci PoquetteBrazil2026-04-28Dorl, James J Esq QUALIFIED78Onyama Limba
1046Kaitlin OstroskyIndia2026-04-19King, Christopher A Esq NEW86Ioni Bowcher
1047Aruna FigeroaAustralia2026-04-18Chapman, Ross E Esq NEGOTIATION66Elwin Sharvill
1048Mujtaba NickaGermany2026-04-24Truhlar And Truhlar Attys PROPOSAL33Anna Fali
1049Costa DilliardRussia2026-04-30Morlong Associates QUALIFIED0Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Juan WieserBrazilOnyama Limba NEW
Aika InouyeGermanyXuxue Feng QUALIFIED
Jones VocelkaItalyElwin Sharvill NEGOTIATION
Adams MorascaFranceIvan Magalhaes NEW
Silvio SlusarskiBrazilOnyama Limba NEGOTIATION
Ashley DoeBrazilOnyama Limba NEGOTIATION
Nicolas IturbideSpainAsiya Javayant UNQUALIFIED
Aika InouyeRussiaXuxue Feng UNQUALIFIED
Silvio SlusarskiBrazilStephen Shaw QUALIFIED
Mayumi KolmetzFranceIvan Magalhaes NEGOTIATION
Jennifer AmigonIndiaOnyama Limba PROPOSAL
Octavia MaletAustraliaIoni Bowcher UNQUALIFIED
Johnson SergiUnited KingdomIvan Magalhaes NEGOTIATION
Costa DilliardJapanElwin Sharvill RENEWAL
Murillo MaletSpainBernardo Dominic UNQUALIFIED
Costa DilliardAustraliaElwin Sharvill NEGOTIATION
Faith GillianFranceXuxue Feng NEGOTIATION
Aika InouyeGermanyBernardo Dominic QUALIFIED
Chavez BriddickBrazilStephen Shaw UNQUALIFIED
Johnson SergiCanadaIvan Magalhaes UNQUALIFIED
Adams MorascaItalyAnna Fali QUALIFIED
Silvio SlusarskiGermanyElwin Sharvill QUALIFIED
Izzy GarufiArgentinaXuxue Feng UNQUALIFIED
Stacey MacleadAustraliaOnyama Limba QUALIFIED
Isabel BowleySpainXuxue Feng QUALIFIED
Wickens NestleGermanyAnna Fali UNQUALIFIED
Rodrigues CampainUnited KingdomXuxue Feng RENEWAL
Antonio CaudyIndiaBernardo Dominic RENEWAL
Antonio CaudyFranceStephen Shaw NEW
Stacey MacleadIndiaAmy Elsner NEW
Cody SaylorsAustraliaIvan Magalhaes PROPOSAL
Jeanfrancois VenereAustraliaAnna Fali QUALIFIED
Nicolas IturbideFranceIoni Bowcher QUALIFIED
Costa DilliardUnited KingdomStephen Shaw PROPOSAL
Ivar PaprockiBrazilBernardo Dominic NEW
Ricardo GauchoCanadaStephen Shaw NEW
Kaitlin OstroskySpainElwin Sharvill RENEWAL
Salvatore StockhamUnited KingdomStephen Shaw NEGOTIATION
Faith GillianGermanyStephen Shaw NEW
Alejandro PerinUnited KingdomOnyama Limba PROPOSAL
Murillo MaletCanadaBernardo Dominic PROPOSAL
Claire TollnerBrazilAsiya Javayant QUALIFIED
Kadeem FlosiCanadaBernardo Dominic PROPOSAL
Leja CaldareraArgentinaOnyama Limba PROPOSAL
Faith GillianAustraliaIoni Bowcher NEGOTIATION
Leon OldroydCanadaStephen Shaw UNQUALIFIED
Adams MorascaUnited KingdomAnna Fali NEGOTIATION
Chavez BriddickJapanAnna Fali UNQUALIFIED
David DarakjyJapanIoni Bowcher NEW
Antonio CaudyFranceStephen Shaw NEGOTIATION
Frozen Columns
Name
Darci Poquette
Smith Glick
Mayumi Kolmetz
Ashley Doe
Misaki Royster
Clifford Rim
Wickens Nestle
Greenwood Bolognia
Darci Poquette
Darci Poquette
Greenwood Bolognia
Sinclair Waycott
Izzy Garufi
Leon Oldroyd
Julie Stenseth
Cody Saylors
Alejandro Perin
Alejandro Perin
Misaki Royster
Maisha Rulapaugh
Aditya Kusko
Claire Tollner
Aruna Figeroa
Francesco Shinko
Deepesh Chui
Ivar Paprocki
Sinclair Waycott
Adams Morasca
Mayumi Kolmetz
Ashley Doe
James Butt
Cody Saylors
Smith Glick
Ashley Doe
Tony Foller
Kadeem Flosi
David Darakjy
Maisha Rulapaugh
Juan Wieser
Morrow Ruta
Arvin Albares
Arvin Albares
Murillo Malet
Smith Glick
Smith Glick
Nicolas Iturbide
Ivar Paprocki
Octavia Malet
Isabel Bowley
Aika Inouye
IdCountryDate
1000Japan2026-04-28
1001Germany2026-05-07
1002Spain2026-04-27
1003Brazil2026-05-08
1004Italy2026-05-01
1005Italy2026-04-19
1006Germany2026-04-19
1007Canada2026-04-16
1008Japan2026-04-24
1009Japan2026-04-16
1010Australia2026-05-02
1011Brazil2026-05-03
1012France2026-05-08
1013United Kingdom2026-04-23
1014France2026-05-02
1015Brazil2026-05-04
1016United Kingdom2026-04-17
1017France2026-04-13
1018Japan2026-05-01
1019Canada2026-05-01
1020Spain2026-05-08
1021Japan2026-04-20
1022Argentina2026-05-05
1023France2026-05-10
1024Japan2026-04-24
1025Argentina2026-04-24
1026Brazil2026-05-05
1027France2026-04-13
1028Spain2026-05-06
1029India2026-04-23
1030Brazil2026-05-04
1031Japan2026-04-30
1032Spain2026-05-01
1033Russia2026-05-05
1034Canada2026-04-28
1035Italy2026-04-27
1036Italy2026-05-04
1037Argentina2026-04-29
1038United Kingdom2026-04-12
1039India2026-04-25
1040United Kingdom2026-04-11
1041France2026-04-12
1042Russia2026-05-07
1043Argentina2026-04-20
1044Japan2026-04-20
1045Japan2026-05-06
1046Canada2026-04-16
1047Brazil2026-04-17
1048India2026-05-04
1049Russia2026-05-07

On-Demand Data

NameIdCountryDate
Johnson Sergi1000India2026-05-02
Ivar Paprocki1001Argentina2026-05-03
Alejandro Perin1002Canada2026-04-16
Maisha Rulapaugh1003United Kingdom2026-05-10
Morrow Ruta1004Australia2026-04-29
Misaki Royster1005India2026-04-27
Jones Vocelka1006Russia2026-04-29
Antonio Caudy1007Australia2026-05-09
Izzy Garufi1008United Kingdom2026-05-08
Izzy Garufi1009Canada2026-04-19
Ricardo Gaucho1010Italy2026-04-14
Aruna Figeroa1011Germany2026-05-07
Octavia Malet1012Russia2026-05-03
Maria Marrier1013United Kingdom2026-05-02
Maria Marrier1014Canada2026-05-08
Aditya Kusko1015Russia2026-04-12
Misaki Royster1016United Kingdom2026-05-09
Greenwood Bolognia1017United Kingdom2026-05-01
Arvin Albares1018Brazil2026-04-27
Jeanfrancois Venere1019Italy2026-05-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Murillo MaletArgentinaXuxue Feng PROPOSAL
Clifford RimGermanyOnyama Limba UNQUALIFIED
Juan WieserJapanBernardo Dominic RENEWAL
Leja CaldareraAustraliaStephen Shaw PROPOSAL
Maria MarrierUnited KingdomAsiya Javayant NEGOTIATION
Claire TollnerCanadaStephen Shaw RENEWAL
Sinclair WaycottBrazilAnna Fali UNQUALIFIED
Aika InouyeFranceAsiya Javayant NEW
Leon OldroydAustraliaAsiya Javayant NEW
Octavia MaletAustraliaBernardo Dominic UNQUALIFIED
Salvatore StockhamRussiaAmy Elsner UNQUALIFIED
Silvio SlusarskiSpainAsiya Javayant RENEWAL
Aika InouyeAustraliaElwin Sharvill NEW
Maria MarrierRussiaStephen Shaw QUALIFIED
Aika InouyeGermanyElwin Sharvill UNQUALIFIED
Leja CaldareraFranceStephen Shaw PROPOSAL
Julie StensethCanadaStephen Shaw RENEWAL
Rodrigues CampainIndiaElwin Sharvill NEGOTIATION
Chavez BriddickGermanyAnna Fali QUALIFIED
Aruna FigeroaJapanAmy Elsner PROPOSAL
Leon OldroydUnited KingdomStephen Shaw UNQUALIFIED
Nicolas IturbideFranceAmy Elsner PROPOSAL
Jeanfrancois VenereUnited KingdomElwin Sharvill QUALIFIED
Jeanfrancois VenereArgentinaIvan Magalhaes QUALIFIED
Greenwood BologniaIndiaBernardo Dominic RENEWAL
Aruna FigeroaItalyElwin Sharvill PROPOSAL
Mayumi KolmetzArgentinaOnyama Limba UNQUALIFIED
Sinclair WaycottIndiaStephen Shaw QUALIFIED
Chavez BriddickIndiaIvan Magalhaes PROPOSAL
Jeanfrancois VenereRussiaIoni Bowcher QUALIFIED
Jefferson SchemmerRussiaStephen Shaw UNQUALIFIED
Leja CaldareraUnited KingdomIvan Magalhaes PROPOSAL
Ricardo GauchoCanadaAmy Elsner PROPOSAL
Clifford RimArgentinaOnyama Limba UNQUALIFIED
Arvin AlbaresAustraliaIoni Bowcher PROPOSAL
Claire TollnerJapanBernardo Dominic RENEWAL
Jones VocelkaIndiaStephen Shaw QUALIFIED
Jones VocelkaBrazilStephen Shaw NEW
Francesco ShinkoFranceIvan Magalhaes NEGOTIATION
James ButtRussiaBernardo Dominic NEW

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