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
Aika InouyeUnited KingdomAsiya Javayant UNQUALIFIED
Arvin AlbaresRussiaStephen Shaw UNQUALIFIED
Smith GlickArgentinaBernardo Dominic PROPOSAL
Ricardo GauchoJapanIvan Magalhaes RENEWAL
Kadeem FlosiAustraliaBernardo Dominic NEGOTIATION
Mayumi KolmetzUnited KingdomAmy Elsner QUALIFIED
Silvio SlusarskiAustraliaElwin Sharvill RENEWAL
Isabel BowleyFranceAnna Fali RENEWAL
Cody SaylorsGermanyAsiya Javayant UNQUALIFIED
Tony FollerGermanyXuxue Feng QUALIFIED
Clifford RimItalyBernardo Dominic PROPOSAL
Arvin AlbaresArgentinaElwin Sharvill QUALIFIED
Morrow RutaSpainAsiya Javayant UNQUALIFIED
Ivar PaprockiGermanyBernardo Dominic QUALIFIED
Morrow RutaArgentinaXuxue Feng RENEWAL
David DarakjyArgentinaOnyama Limba NEGOTIATION
Kaitlin OstroskyGermanyElwin Sharvill RENEWAL
Ivar PaprockiRussiaStephen Shaw NEGOTIATION
Nicolas IturbideIndiaElwin Sharvill NEW
Juan WieserFranceIvan Magalhaes QUALIFIED
Kadeem FlosiUnited KingdomAmy Elsner NEW
Costa DilliardItalyBernardo Dominic UNQUALIFIED
James ButtCanadaAmy Elsner QUALIFIED
Rodrigues CampainItalyXuxue Feng PROPOSAL
Leon OldroydRussiaIvan Magalhaes UNQUALIFIED
Maisha RulapaughCanadaOnyama Limba PROPOSAL
Murillo MaletAustraliaStephen Shaw RENEWAL
Mayumi KolmetzBrazilBernardo Dominic UNQUALIFIED
Antonio CaudyRussiaAnna Fali RENEWAL
Isabel BowleySpainElwin Sharvill PROPOSAL
Juan WieserItalyBernardo Dominic PROPOSAL
Greenwood BologniaGermanyXuxue Feng NEGOTIATION
Aika InouyeItalyAsiya Javayant UNQUALIFIED
Costa DilliardFranceAmy Elsner PROPOSAL
Munro FerenczSpainIvan Magalhaes RENEWAL
Antonio CaudyIndiaXuxue Feng NEGOTIATION
Sinclair WaycottGermanyXuxue Feng NEGOTIATION
David DarakjyIndiaElwin Sharvill QUALIFIED
Maisha RulapaughIndiaElwin Sharvill NEW
Munro FerenczJapanBernardo Dominic RENEWAL
Aditya KuskoBrazilIoni Bowcher NEW
Cody SaylorsIndiaIoni Bowcher RENEWAL
Arvin AlbaresGermanyIoni Bowcher NEGOTIATION
Aruna FigeroaArgentinaIvan Magalhaes NEGOTIATION
Ashley DoeGermanyBernardo Dominic NEW
Chavez BriddickCanadaXuxue Feng QUALIFIED
Leon OldroydItalyIoni Bowcher NEGOTIATION
Darci PoquetteRussiaElwin Sharvill QUALIFIED
Stacey MacleadRussiaBernardo Dominic RENEWAL
Aruna FigeroaRussiaElwin Sharvill UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Clifford RimFranceStephen Shaw NEGOTIATION
Deepesh ChuiGermanyBernardo Dominic NEW
Ashley DoeUnited KingdomStephen Shaw UNQUALIFIED
Wickens NestleAustraliaAmy Elsner RENEWAL
Maisha RulapaughItalyIvan Magalhaes QUALIFIED
Francesco ShinkoBrazilStephen Shaw UNQUALIFIED
Faith GillianAustraliaAsiya Javayant UNQUALIFIED
Johnson SergiSpainAnna Fali PROPOSAL
Aruna FigeroaUnited KingdomOnyama Limba PROPOSAL
Greenwood BologniaGermanyStephen Shaw NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leon OldroydItaly2026-06-08Rousseaux, Michael Esq NEGOTIATION42Stephen Shaw
1001Kaitlin OstroskyBrazil2026-05-26Commercial Press QUALIFIED60Bernardo Dominic
1002Claire TollnerArgentina2026-06-17Chanay, Jeffrey A Esq PROPOSAL13Onyama Limba
1003Tony FollerItaly2026-06-15Chanay, Jeffrey A Esq PROPOSAL28Amy Elsner
1004Antonio CaudyFrance2026-06-04Morlong Associates QUALIFIED79Stephen Shaw
1005Julie StensethSpain2026-06-16Benton, John B Jr UNQUALIFIED69Stephen Shaw
1006Jefferson SchemmerArgentina2026-06-18King, Christopher A Esq PROPOSAL71Xuxue Feng
1007Maria MarrierRussia2026-06-15Chemel, James L Cpa NEGOTIATION72Ivan Magalhaes
1008Ricardo GauchoBrazil2026-06-11Feiner Bros PROPOSAL55Ioni Bowcher
1009Stacey MacleadUnited Kingdom2026-06-02Buckley Miller Wright NEW94Bernardo Dominic
1010Alejandro PerinRussia2026-06-03King, Christopher A Esq QUALIFIED91Xuxue Feng
1011Leja CaldareraJapan2026-06-08Morlong Associates QUALIFIED80Anna Fali
1012Clifford RimJapan2026-05-31Truhlar And Truhlar Attys NEW50Stephen Shaw
1013James ButtIndia2026-05-24Chanay, Jeffrey A Esq NEW92Ioni Bowcher
1014Julie StensethUnited Kingdom2026-06-05Feltz Printing Service NEW98Amy Elsner
1015Ricardo GauchoFrance2026-06-16Morlong Associates NEGOTIATION40Xuxue Feng
1016Smith GlickCanada2026-06-05Chemel, James L Cpa RENEWAL72Elwin Sharvill
1017Cody SaylorsItaly2026-05-31Rousseaux, Michael Esq NEW35Ioni Bowcher
1018Silvio SlusarskiUnited Kingdom2026-06-08Benton, John B Jr PROPOSAL73Bernardo Dominic
1019Jefferson SchemmerUnited Kingdom2026-05-23Printing Dimensions NEGOTIATION27Elwin Sharvill
1020Kadeem FlosiGermany2026-06-02Rousseaux, Michael Esq UNQUALIFIED97Xuxue Feng
1021Jeanfrancois VenereAustralia2026-05-22Chemel, James L Cpa RENEWAL25Xuxue Feng
1022Emily WhobreyUnited Kingdom2026-06-17Chemel, James L Cpa NEW84Onyama Limba
1023Jeanfrancois VenereIndia2026-05-30Printing Dimensions NEW44Elwin Sharvill
1024Jennifer AmigonFrance2026-05-23Dorl, James J Esq NEGOTIATION53Ioni Bowcher
1025Jeanfrancois VenereJapan2026-05-29Truhlar And Truhlar Attys RENEWAL47Asiya Javayant
1026Smith GlickUnited Kingdom2026-05-20Rousseaux, Michael Esq NEW33Elwin Sharvill
1027Aditya KuskoAustralia2026-06-17Chanay, Jeffrey A Esq UNQUALIFIED72Ivan Magalhaes
1028Stacey MacleadRussia2026-06-01Morlong Associates NEW18Ioni Bowcher
1029Salvatore StockhamCanada2026-06-01Chanay, Jeffrey A Esq PROPOSAL9Stephen Shaw
1030Kaitlin OstroskyUnited Kingdom2026-05-28King, Christopher A Esq QUALIFIED16Ivan Magalhaes
1031Chavez BriddickRussia2026-06-16Rousseaux, Michael Esq NEGOTIATION16Stephen Shaw
1032Jennifer AmigonCanada2026-05-27Feltz Printing Service NEW74Onyama Limba
1033Juan WieserUnited Kingdom2026-06-11Truhlar And Truhlar Attys RENEWAL67Elwin Sharvill
1034Emily WhobreyArgentina2026-05-24Truhlar And Truhlar Attys NEGOTIATION99Asiya Javayant
1035Jeanfrancois VenereArgentina2026-06-15Feiner Bros RENEWAL46Ivan Magalhaes
1036Costa DilliardAustralia2026-06-14Chemel, James L Cpa QUALIFIED23Anna Fali
1037Aika InouyeIndia2026-05-28Dorl, James J Esq QUALIFIED64Stephen Shaw
1038Mayumi KolmetzCanada2026-06-09Feiner Bros RENEWAL99Bernardo Dominic
1039Rodrigues CampainAustralia2026-06-07Chemel, James L Cpa NEW99Ioni Bowcher
1040Smith GlickIndia2026-06-02Dorl, James J Esq UNQUALIFIED28Asiya Javayant
1041Maisha RulapaughUnited Kingdom2026-05-31Feiner Bros NEW81Stephen Shaw
1042Alejandro PerinUnited Kingdom2026-05-28Truhlar And Truhlar Attys QUALIFIED56Ivan Magalhaes
1043Greenwood BologniaGermany2026-05-23Chanay, Jeffrey A Esq PROPOSAL44Anna Fali
1044Greenwood BologniaItaly2026-05-25Truhlar And Truhlar Attys PROPOSAL41Ivan Magalhaes
1045Jefferson SchemmerAustralia2026-05-28Rousseaux, Michael Esq PROPOSAL60Elwin Sharvill
1046Maisha RulapaughIndia2026-06-05King, Christopher A Esq QUALIFIED90Amy Elsner
1047Stacey MacleadSpain2026-05-21Dorl, James J Esq NEGOTIATION41Ioni Bowcher
1048James ButtSpain2026-06-13Chemel, James L Cpa RENEWAL6Onyama Limba
1049Stacey MacleadBrazil2026-05-26Feltz Printing Service PROPOSAL1Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Alejandro PerinBrazilOnyama Limba QUALIFIED
David DarakjyBrazilBernardo Dominic RENEWAL
Morrow RutaAustraliaAmy Elsner RENEWAL
David DarakjyFranceAsiya Javayant NEW
James ButtRussiaAsiya Javayant PROPOSAL
Faith GillianSpainAsiya Javayant NEW
Kaitlin OstroskyCanadaIvan Magalhaes RENEWAL
Leja CaldareraRussiaAmy Elsner PROPOSAL
Misaki RoysterArgentinaAsiya Javayant QUALIFIED
David DarakjyFranceBernardo Dominic NEW
Chavez BriddickItalyElwin Sharvill RENEWAL
Morrow RutaFranceAmy Elsner PROPOSAL
Kaitlin OstroskySpainIoni Bowcher NEW
Chavez BriddickCanadaOnyama Limba PROPOSAL
Kadeem FlosiAustraliaIoni Bowcher NEW
Julie StensethFranceAnna Fali UNQUALIFIED
Arvin AlbaresJapanAmy Elsner QUALIFIED
Munro FerenczRussiaAnna Fali UNQUALIFIED
David DarakjyItalyIoni Bowcher QUALIFIED
Tony FollerJapanStephen Shaw NEGOTIATION
Mujtaba NickaIndiaAmy Elsner PROPOSAL
Arvin AlbaresFranceAmy Elsner UNQUALIFIED
Sinclair WaycottFranceIoni Bowcher NEW
Jennifer AmigonSpainStephen Shaw PROPOSAL
Antonio CaudyAustraliaElwin Sharvill UNQUALIFIED
Stacey MacleadArgentinaElwin Sharvill NEW
Silvio SlusarskiRussiaXuxue Feng NEW
Ashley DoeSpainBernardo Dominic NEW
Izzy GarufiIndiaElwin Sharvill QUALIFIED
Johnson SergiBrazilOnyama Limba PROPOSAL
Costa DilliardGermanyElwin Sharvill QUALIFIED
Maisha RulapaughArgentinaStephen Shaw NEGOTIATION
Smith GlickArgentinaIvan Magalhaes QUALIFIED
Leja CaldareraRussiaAmy Elsner UNQUALIFIED
Ricardo GauchoItalyIoni Bowcher NEGOTIATION
Aika InouyeAustraliaOnyama Limba QUALIFIED
Greenwood BologniaArgentinaXuxue Feng RENEWAL
Misaki RoysterJapanIoni Bowcher QUALIFIED
Johnson SergiBrazilIoni Bowcher NEW
Salvatore StockhamAustraliaBernardo Dominic UNQUALIFIED
Maisha RulapaughItalyIoni Bowcher QUALIFIED
Francesco ShinkoBrazilAmy Elsner UNQUALIFIED
Faith GillianAustraliaIvan Magalhaes UNQUALIFIED
Izzy GarufiArgentinaAnna Fali PROPOSAL
Stacey MacleadJapanXuxue Feng RENEWAL
Silvio SlusarskiFranceStephen Shaw QUALIFIED
Morrow RutaGermanyElwin Sharvill PROPOSAL
Jones VocelkaBrazilStephen Shaw NEW
Jeanfrancois VenereGermanyAnna Fali NEGOTIATION
Adams MorascaIndiaAnna Fali NEGOTIATION
Frozen Columns
Name
Darci Poquette
Aika Inouye
Leon Oldroyd
Stacey Maclead
Chavez Briddick
Leja Caldarera
Emily Whobrey
Tony Foller
Maria Marrier
Morrow Ruta
Claire Tollner
Darci Poquette
Ricardo Gaucho
Juan Wieser
Chavez Briddick
Kaitlin Ostrosky
Claire Tollner
Aruna Figeroa
Smith Glick
Sinclair Waycott
Jefferson Schemmer
Johnson Sergi
Emily Whobrey
Isabel Bowley
Johnson Sergi
Kaitlin Ostrosky
Francesco Shinko
Stacey Maclead
Isabel Bowley
Leon Oldroyd
Maria Marrier
Smith Glick
Johnson Sergi
Jennifer Amigon
Smith Glick
Clifford Rim
Antonio Caudy
Ashley Doe
Julie Stenseth
Jeanfrancois Venere
Faith Gillian
Kaitlin Ostrosky
Juan Wieser
Sinclair Waycott
Salvatore Stockham
Ashley Doe
Salvatore Stockham
Sinclair Waycott
Adams Morasca
Faith Gillian
IdCountryDate
1000Canada2026-06-04
1001Brazil2026-06-04
1002Germany2026-06-15
1003Canada2026-05-22
1004Brazil2026-06-06
1005India2026-06-10
1006France2026-06-17
1007Australia2026-05-30
1008France2026-05-23
1009Canada2026-05-24
1010Spain2026-06-17
1011Italy2026-05-22
1012Argentina2026-06-07
1013Canada2026-06-11
1014Japan2026-05-21
1015Germany2026-06-04
1016Italy2026-06-18
1017Spain2026-06-10
1018Russia2026-06-10
1019Argentina2026-06-08
1020France2026-05-27
1021Argentina2026-06-13
1022Italy2026-06-17
1023Argentina2026-06-03
1024Italy2026-06-16
1025Italy2026-05-31
1026Canada2026-05-26
1027Germany2026-06-04
1028Italy2026-06-07
1029Italy2026-05-29
1030United Kingdom2026-06-13
1031Russia2026-06-09
1032India2026-06-15
1033Canada2026-06-02
1034Argentina2026-06-07
1035Japan2026-06-11
1036Canada2026-05-24
1037Australia2026-05-23
1038India2026-05-24
1039Brazil2026-05-30
1040Japan2026-06-16
1041Australia2026-06-17
1042Australia2026-06-15
1043Canada2026-06-04
1044Argentina2026-05-31
1045Canada2026-06-01
1046France2026-05-29
1047Germany2026-05-22
1048United Kingdom2026-06-14
1049Italy2026-05-31

On-Demand Data

NameIdCountryDate
Darci Poquette1000Italy2026-06-07
Misaki Royster1001Brazil2026-06-03
Silvio Slusarski1002Russia2026-05-30
Silvio Slusarski1003United Kingdom2026-06-08
Mujtaba Nicka1004Japan2026-06-13
Mujtaba Nicka1005India2026-05-26
David Darakjy1006Brazil2026-05-24
Octavia Malet1007Spain2026-06-13
Ashley Doe1008Japan2026-06-18
James Butt1009United Kingdom2026-05-22
Smith Glick1010Germany2026-06-16
Silvio Slusarski1011Russia2026-06-10
Jeanfrancois Venere1012France2026-06-18
Jones Vocelka1013Australia2026-06-01
Alejandro Perin1014Canada2026-05-22
Jennifer Amigon1015United Kingdom2026-06-01
Aika Inouye1016Germany2026-06-08
Costa Dilliard1017Germany2026-06-04
Greenwood Bolognia1018Italy2026-06-02
Julie Stenseth1019Russia2026-06-05
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
James ButtFranceElwin Sharvill NEW
Morrow RutaFranceElwin Sharvill NEW
Claire TollnerBrazilAmy Elsner NEGOTIATION
Faith GillianBrazilOnyama Limba UNQUALIFIED
Arvin AlbaresGermanyAsiya Javayant UNQUALIFIED
Clifford RimIndiaAnna Fali PROPOSAL
Silvio SlusarskiItalyIoni Bowcher QUALIFIED
Misaki RoysterUnited KingdomStephen Shaw QUALIFIED
Munro FerenczSpainElwin Sharvill PROPOSAL
Morrow RutaArgentinaBernardo Dominic RENEWAL
Jones VocelkaSpainAsiya Javayant NEGOTIATION
Cody SaylorsCanadaBernardo Dominic RENEWAL
Chavez BriddickAustraliaIvan Magalhaes NEGOTIATION
Mayumi KolmetzBrazilOnyama Limba NEGOTIATION
Misaki RoysterJapanIvan Magalhaes NEGOTIATION
Jefferson SchemmerUnited KingdomStephen Shaw PROPOSAL
Kaitlin OstroskyGermanyElwin Sharvill NEGOTIATION
Aditya KuskoJapanIoni Bowcher RENEWAL
Clifford RimIndiaStephen Shaw NEGOTIATION
Cody SaylorsFranceOnyama Limba RENEWAL
Izzy GarufiFranceIoni Bowcher RENEWAL
Jones VocelkaBrazilIoni Bowcher UNQUALIFIED
Leon OldroydRussiaOnyama Limba RENEWAL
Stacey MacleadSpainBernardo Dominic QUALIFIED
Jones VocelkaItalyAsiya Javayant PROPOSAL
Adams MorascaCanadaIvan Magalhaes QUALIFIED
Ashley DoeCanadaElwin Sharvill PROPOSAL
Munro FerenczIndiaAnna Fali QUALIFIED
Sinclair WaycottCanadaAsiya Javayant NEGOTIATION
Kaitlin OstroskyJapanAmy Elsner NEW
Arvin AlbaresSpainElwin Sharvill NEW
Darci PoquetteRussiaXuxue Feng QUALIFIED
Claire TollnerArgentinaAsiya Javayant NEW
Costa DilliardSpainIvan Magalhaes PROPOSAL
Greenwood BologniaJapanAmy Elsner NEW
Isabel BowleyFranceIoni Bowcher NEW
Francesco ShinkoCanadaAnna Fali QUALIFIED
Rodrigues CampainItalyXuxue Feng NEGOTIATION
Nicolas IturbideGermanyOnyama Limba RENEWAL
Kadeem FlosiArgentinaAsiya Javayant QUALIFIED

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