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
Chavez BriddickBrazilXuxue Feng NEGOTIATION
Isabel BowleyGermanyXuxue Feng NEW
Isabel BowleyJapanAmy Elsner QUALIFIED
James ButtFranceAnna Fali UNQUALIFIED
Chavez BriddickUnited KingdomAnna Fali UNQUALIFIED
David DarakjyItalyStephen Shaw NEW
Claire TollnerArgentinaIvan Magalhaes UNQUALIFIED
Sinclair WaycottItalyAsiya Javayant UNQUALIFIED
Alejandro PerinAustraliaIvan Magalhaes PROPOSAL
Darci PoquetteFranceElwin Sharvill NEW
Izzy GarufiUnited KingdomBernardo Dominic PROPOSAL
Mayumi KolmetzIndiaAsiya Javayant QUALIFIED
Faith GillianFranceElwin Sharvill NEGOTIATION
Jefferson SchemmerAustraliaIoni Bowcher PROPOSAL
Leon OldroydUnited KingdomIoni Bowcher NEW
Adams MorascaBrazilIvan Magalhaes RENEWAL
Ricardo GauchoCanadaXuxue Feng PROPOSAL
David DarakjyCanadaAnna Fali RENEWAL
Sinclair WaycottAustraliaIvan Magalhaes QUALIFIED
Murillo MaletGermanyBernardo Dominic NEGOTIATION
Chavez BriddickBrazilStephen Shaw NEW
Leon OldroydAustraliaXuxue Feng RENEWAL
Adams MorascaSpainIvan Magalhaes UNQUALIFIED
Jefferson SchemmerArgentinaIoni Bowcher UNQUALIFIED
Alejandro PerinIndiaIvan Magalhaes RENEWAL
Nicolas IturbideArgentinaIoni Bowcher RENEWAL
Nicolas IturbideIndiaIoni Bowcher RENEWAL
Kadeem FlosiItalyIoni Bowcher UNQUALIFIED
Francesco ShinkoItalyBernardo Dominic UNQUALIFIED
Clifford RimFranceAmy Elsner QUALIFIED
Ricardo GauchoFranceIvan Magalhaes NEW
Costa DilliardRussiaIvan Magalhaes NEGOTIATION
Octavia MaletCanadaIoni Bowcher QUALIFIED
Mayumi KolmetzSpainAnna Fali NEW
Jeanfrancois VenereIndiaAsiya Javayant RENEWAL
Silvio SlusarskiJapanIvan Magalhaes RENEWAL
Kaitlin OstroskyGermanyIvan Magalhaes NEGOTIATION
Murillo MaletGermanyOnyama Limba UNQUALIFIED
Emily WhobreyCanadaAsiya Javayant QUALIFIED
Silvio SlusarskiGermanyAsiya Javayant UNQUALIFIED
Johnson SergiAustraliaElwin Sharvill RENEWAL
Kadeem FlosiItalyIoni Bowcher QUALIFIED
Costa DilliardGermanyIvan Magalhaes QUALIFIED
Nicolas IturbideArgentinaOnyama Limba NEW
Faith GillianJapanAsiya Javayant QUALIFIED
Deepesh ChuiRussiaXuxue Feng NEW
Aika InouyeAustraliaBernardo Dominic PROPOSAL
Cody SaylorsIndiaIoni Bowcher UNQUALIFIED
Leja CaldareraCanadaElwin Sharvill RENEWAL
Emily WhobreyBrazilOnyama Limba UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Jones VocelkaIndiaElwin Sharvill QUALIFIED
Costa DilliardSpainIoni Bowcher NEGOTIATION
David DarakjyFranceElwin Sharvill UNQUALIFIED
David DarakjyArgentinaXuxue Feng UNQUALIFIED
Johnson SergiBrazilIvan Magalhaes PROPOSAL
Jeanfrancois VenereRussiaIvan Magalhaes NEGOTIATION
Chavez BriddickFranceAsiya Javayant PROPOSAL
Greenwood BologniaGermanyAmy Elsner NEGOTIATION
Tony FollerFranceAsiya Javayant RENEWAL
Nicolas IturbideGermanyAmy Elsner UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Silvio SlusarskiIndia2026-04-25Commercial Press RENEWAL90Ioni Bowcher
1001Stacey MacleadFrance2026-05-12Benton, John B Jr PROPOSAL15Amy Elsner
1002Aika InouyeJapan2026-04-20Chanay, Jeffrey A Esq UNQUALIFIED42Ioni Bowcher
1003Aruna FigeroaAustralia2026-05-08Rousseaux, Michael Esq QUALIFIED11Asiya Javayant
1004Mujtaba NickaIndia2026-04-29Truhlar And Truhlar Attys RENEWAL64Amy Elsner
1005David DarakjyCanada2026-04-26Truhlar And Truhlar Attys PROPOSAL76Anna Fali
1006Sinclair WaycottItaly2026-04-19Feiner Bros NEGOTIATION41Ivan Magalhaes
1007Ivar PaprockiFrance2026-05-06Truhlar And Truhlar Attys PROPOSAL24Amy Elsner
1008Arvin AlbaresCanada2026-04-14Buckley Miller Wright UNQUALIFIED41Asiya Javayant
1009Clifford RimGermany2026-05-04Feiner Bros NEW54Anna Fali
1010David DarakjyCanada2026-04-30King, Christopher A Esq QUALIFIED28Asiya Javayant
1011Aruna FigeroaFrance2026-05-05Benton, John B Jr QUALIFIED13Asiya Javayant
1012Murillo MaletRussia2026-05-02Rousseaux, Michael Esq PROPOSAL55Ioni Bowcher
1013Faith GillianArgentina2026-05-08King, Christopher A Esq RENEWAL34Asiya Javayant
1014Isabel BowleyArgentina2026-05-11Chanay, Jeffrey A Esq NEGOTIATION9Elwin Sharvill
1015Rodrigues CampainJapan2026-04-23Dorl, James J Esq PROPOSAL34Elwin Sharvill
1016Rodrigues CampainFrance2026-04-29Morlong Associates NEW18Amy Elsner
1017Emily WhobreyGermany2026-04-22Chanay, Jeffrey A Esq NEW58Ioni Bowcher
1018Leon OldroydSpain2026-04-16Chanay, Jeffrey A Esq UNQUALIFIED15Ioni Bowcher
1019Tony FollerCanada2026-05-12Chemel, James L Cpa RENEWAL99Stephen Shaw
1020Chavez BriddickArgentina2026-05-02Truhlar And Truhlar Attys QUALIFIED96Amy Elsner
1021Maisha RulapaughAustralia2026-04-14Rousseaux, Michael Esq PROPOSAL25Ivan Magalhaes
1022David DarakjyItaly2026-05-03Chemel, James L Cpa UNQUALIFIED3Elwin Sharvill
1023Chavez BriddickJapan2026-04-28King, Christopher A Esq UNQUALIFIED25Ioni Bowcher
1024Maisha RulapaughJapan2026-04-25Dorl, James J Esq NEGOTIATION31Stephen Shaw
1025Rodrigues CampainUnited Kingdom2026-04-30Chemel, James L Cpa QUALIFIED70Xuxue Feng
1026Antonio CaudyFrance2026-04-24Printing Dimensions PROPOSAL29Stephen Shaw
1027Kadeem FlosiRussia2026-04-18Commercial Press NEGOTIATION99Asiya Javayant
1028Ricardo GauchoFrance2026-04-22Chanay, Jeffrey A Esq RENEWAL27Ioni Bowcher
1029Johnson SergiCanada2026-04-14Dorl, James J Esq RENEWAL65Xuxue Feng
1030Kadeem FlosiUnited Kingdom2026-04-25Printing Dimensions NEGOTIATION93Asiya Javayant
1031Darci PoquetteArgentina2026-04-18King, Christopher A Esq NEW41Onyama Limba
1032Ricardo GauchoJapan2026-05-04Rousseaux, Michael Esq RENEWAL93Amy Elsner
1033Tony FollerArgentina2026-05-07Chanay, Jeffrey A Esq RENEWAL40Xuxue Feng
1034Kaitlin OstroskyArgentina2026-05-09Rangoni Of Florence NEGOTIATION62Ioni Bowcher
1035Ricardo GauchoFrance2026-04-23Feiner Bros RENEWAL40Elwin Sharvill
1036Octavia MaletCanada2026-05-04Rangoni Of Florence PROPOSAL31Ioni Bowcher
1037Greenwood BologniaSpain2026-05-02Rousseaux, Michael Esq RENEWAL2Ivan Magalhaes
1038Smith GlickAustralia2026-04-27Chemel, James L Cpa NEW67Elwin Sharvill
1039Mujtaba NickaAustralia2026-04-27Chapman, Ross E Esq PROPOSAL96Bernardo Dominic
1040Salvatore StockhamAustralia2026-05-06Chanay, Jeffrey A Esq PROPOSAL76Elwin Sharvill
1041Deepesh ChuiCanada2026-04-29Feltz Printing Service NEW90Ivan Magalhaes
1042Isabel BowleyIndia2026-05-01Chanay, Jeffrey A Esq RENEWAL3Elwin Sharvill
1043Clifford RimGermany2026-05-09King, Christopher A Esq RENEWAL62Ivan Magalhaes
1044Deepesh ChuiSpain2026-05-01King, Christopher A Esq RENEWAL30Stephen Shaw
1045Izzy GarufiIndia2026-05-03Chemel, James L Cpa NEW76Anna Fali
1046Rodrigues CampainJapan2026-04-21Printing Dimensions QUALIFIED31Onyama Limba
1047Mujtaba NickaGermany2026-05-09Buckley Miller Wright PROPOSAL4Anna Fali
1048Jennifer AmigonBrazil2026-05-06Rangoni Of Florence PROPOSAL2Amy Elsner
1049Murillo MaletUnited Kingdom2026-04-29Commercial Press NEGOTIATION33Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Aruna FigeroaGermanyAsiya Javayant NEW
Leja CaldareraCanadaAmy Elsner UNQUALIFIED
Julie StensethAustraliaXuxue Feng QUALIFIED
Francesco ShinkoRussiaIoni Bowcher NEW
Ricardo GauchoGermanyIvan Magalhaes UNQUALIFIED
Costa DilliardItalyAnna Fali NEW
Leon OldroydItalyStephen Shaw UNQUALIFIED
Jennifer AmigonCanadaOnyama Limba NEGOTIATION
Faith GillianJapanIoni Bowcher NEW
Johnson SergiCanadaBernardo Dominic QUALIFIED
Maisha RulapaughUnited KingdomBernardo Dominic QUALIFIED
Francesco ShinkoAustraliaElwin Sharvill NEGOTIATION
Octavia MaletArgentinaOnyama Limba RENEWAL
Aruna FigeroaSpainIoni Bowcher NEW
Arvin AlbaresSpainElwin Sharvill NEGOTIATION
Juan WieserItalyBernardo Dominic RENEWAL
Clifford RimFranceIoni Bowcher RENEWAL
Aruna FigeroaUnited KingdomAmy Elsner NEW
Ashley DoeBrazilStephen Shaw PROPOSAL
Deepesh ChuiItalyIvan Magalhaes QUALIFIED
Faith GillianUnited KingdomAsiya Javayant QUALIFIED
Stacey MacleadBrazilElwin Sharvill NEGOTIATION
Darci PoquetteAustraliaIvan Magalhaes NEGOTIATION
Wickens NestleArgentinaXuxue Feng PROPOSAL
Emily WhobreySpainXuxue Feng NEW
Smith GlickArgentinaAsiya Javayant QUALIFIED
Darci PoquetteAustraliaStephen Shaw UNQUALIFIED
Sinclair WaycottRussiaAnna Fali RENEWAL
Alejandro PerinIndiaAmy Elsner QUALIFIED
Juan WieserIndiaIvan Magalhaes QUALIFIED
Mayumi KolmetzAustraliaAnna Fali QUALIFIED
Isabel BowleySpainElwin Sharvill NEW
Faith GillianCanadaStephen Shaw NEGOTIATION
Jeanfrancois VenereAustraliaBernardo Dominic QUALIFIED
James ButtItalyIoni Bowcher RENEWAL
Johnson SergiAustraliaBernardo Dominic UNQUALIFIED
Wickens NestleItalyAmy Elsner QUALIFIED
David DarakjyGermanyXuxue Feng RENEWAL
Julie StensethGermanyBernardo Dominic PROPOSAL
Darci PoquetteRussiaIoni Bowcher NEGOTIATION
Emily WhobreyGermanyIvan Magalhaes NEW
Juan WieserItalyOnyama Limba RENEWAL
Smith GlickIndiaElwin Sharvill NEW
Munro FerenczArgentinaAsiya Javayant NEGOTIATION
Aika InouyeSpainOnyama Limba NEW
Greenwood BologniaItalyElwin Sharvill PROPOSAL
Jones VocelkaCanadaIvan Magalhaes UNQUALIFIED
Ricardo GauchoJapanAnna Fali NEW
Ricardo GauchoFranceOnyama Limba RENEWAL
Ivar PaprockiGermanyElwin Sharvill RENEWAL
Frozen Columns
Name
Maisha Rulapaugh
Cody Saylors
Smith Glick
Munro Ferencz
Francesco Shinko
Nicolas Iturbide
Jefferson Schemmer
Jennifer Amigon
Stacey Maclead
Johnson Sergi
Rodrigues Campain
Munro Ferencz
Antonio Caudy
James Butt
Leon Oldroyd
Ashley Doe
David Darakjy
Kaitlin Ostrosky
Darci Poquette
Jones Vocelka
Salvatore Stockham
Chavez Briddick
Johnson Sergi
Francesco Shinko
Ashley Doe
Greenwood Bolognia
Clifford Rim
James Butt
Aruna Figeroa
Cody Saylors
Aruna Figeroa
James Butt
Alejandro Perin
David Darakjy
Julie Stenseth
Isabel Bowley
Francesco Shinko
Chavez Briddick
Isabel Bowley
Aditya Kusko
Johnson Sergi
Maria Marrier
Aditya Kusko
Faith Gillian
Darci Poquette
Antonio Caudy
Isabel Bowley
Antonio Caudy
Aruna Figeroa
Claire Tollner
IdCountryDate
1000Brazil2026-04-23
1001Japan2026-04-18
1002Spain2026-04-18
1003Canada2026-04-30
1004Russia2026-04-27
1005Germany2026-04-21
1006Australia2026-05-03
1007Germany2026-05-07
1008Russia2026-04-25
1009Australia2026-05-07
1010Japan2026-05-08
1011United Kingdom2026-04-27
1012Australia2026-05-11
1013India2026-04-21
1014Russia2026-04-27
1015Russia2026-05-08
1016Germany2026-04-25
1017Germany2026-04-23
1018United Kingdom2026-05-02
1019Germany2026-04-29
1020Canada2026-05-09
1021France2026-05-07
1022Argentina2026-05-07
1023Germany2026-04-15
1024India2026-04-27
1025Italy2026-04-19
1026Canada2026-04-14
1027Italy2026-04-20
1028Russia2026-04-27
1029Australia2026-04-24
1030Italy2026-04-17
1031Spain2026-04-15
1032Japan2026-05-11
1033Argentina2026-04-27
1034Germany2026-05-12
1035Italy2026-04-20
1036Argentina2026-05-11
1037Argentina2026-04-19
1038Germany2026-04-27
1039Germany2026-04-28
1040Germany2026-04-29
1041Italy2026-04-26
1042Canada2026-04-22
1043Brazil2026-04-23
1044Spain2026-05-10
1045Japan2026-04-26
1046Canada2026-04-25
1047Argentina2026-04-25
1048France2026-04-28
1049Italy2026-04-24

On-Demand Data

NameIdCountryDate
Cody Saylors1000Spain2026-05-08
Arvin Albares1001United Kingdom2026-05-07
Ricardo Gaucho1002United Kingdom2026-05-01
Johnson Sergi1003Russia2026-04-30
Wickens Nestle1004United Kingdom2026-05-11
Aditya Kusko1005Germany2026-05-02
Kadeem Flosi1006Russia2026-04-29
Silvio Slusarski1007Australia2026-04-17
Leon Oldroyd1008Italy2026-04-18
Leja Caldarera1009India2026-05-12
Julie Stenseth1010Brazil2026-04-23
Clifford Rim1011Japan2026-04-23
Misaki Royster1012Australia2026-04-16
Ivar Paprocki1013France2026-04-16
Julie Stenseth1014Canada2026-04-24
Aruna Figeroa1015Brazil2026-04-24
Murillo Malet1016Russia2026-05-10
Emily Whobrey1017Italy2026-05-10
Leon Oldroyd1018Canada2026-04-26
Johnson Sergi1019Russia2026-04-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Clifford RimArgentinaStephen Shaw NEW
Isabel BowleyIndiaElwin Sharvill PROPOSAL
Aruna FigeroaItalyIoni Bowcher NEW
Juan WieserFranceAmy Elsner PROPOSAL
Stacey MacleadSpainStephen Shaw UNQUALIFIED
Misaki RoysterJapanIoni Bowcher PROPOSAL
Maisha RulapaughSpainAmy Elsner QUALIFIED
Francesco ShinkoIndiaIoni Bowcher PROPOSAL
Juan WieserAustraliaIvan Magalhaes QUALIFIED
Claire TollnerUnited KingdomElwin Sharvill UNQUALIFIED
Aditya KuskoSpainStephen Shaw NEGOTIATION
Kadeem FlosiSpainStephen Shaw UNQUALIFIED
Leja CaldareraArgentinaElwin Sharvill UNQUALIFIED
Francesco ShinkoItalyIvan Magalhaes NEW
Tony FollerArgentinaIvan Magalhaes RENEWAL
Murillo MaletBrazilXuxue Feng UNQUALIFIED
Ashley DoeArgentinaXuxue Feng NEGOTIATION
Greenwood BologniaBrazilOnyama Limba NEGOTIATION
Mujtaba NickaJapanAmy Elsner NEGOTIATION
Antonio CaudyJapanAmy Elsner UNQUALIFIED
Cody SaylorsAustraliaAsiya Javayant PROPOSAL
Stacey MacleadItalyXuxue Feng NEGOTIATION
Smith GlickUnited KingdomXuxue Feng QUALIFIED
David DarakjyItalyIvan Magalhaes PROPOSAL
Ricardo GauchoBrazilElwin Sharvill NEGOTIATION
Ricardo GauchoFranceAnna Fali NEGOTIATION
Ricardo GauchoBrazilXuxue Feng NEGOTIATION
Costa DilliardSpainElwin Sharvill NEW
Morrow RutaJapanAmy Elsner RENEWAL
Mayumi KolmetzUnited KingdomAmy Elsner RENEWAL
Sinclair WaycottBrazilXuxue Feng UNQUALIFIED
Stacey MacleadIndiaIoni Bowcher NEGOTIATION
Antonio CaudyUnited KingdomAsiya Javayant NEW
Antonio CaudyUnited KingdomAsiya Javayant RENEWAL
Maria MarrierCanadaBernardo Dominic QUALIFIED
Mujtaba NickaBrazilBernardo Dominic QUALIFIED
Kaitlin OstroskyAustraliaXuxue Feng QUALIFIED
Nicolas IturbideRussiaIoni Bowcher NEGOTIATION
Greenwood BologniaIndiaAnna Fali NEW
Antonio CaudyRussiaBernardo Dominic 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>