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
Cody SaylorsGermanyBernardo Dominic QUALIFIED
Stacey MacleadAustraliaAmy Elsner PROPOSAL
Smith GlickGermanyXuxue Feng PROPOSAL
Aditya KuskoFranceElwin Sharvill NEGOTIATION
Arvin AlbaresArgentinaXuxue Feng PROPOSAL
Ricardo GauchoUnited KingdomIvan Magalhaes NEGOTIATION
Ricardo GauchoIndiaStephen Shaw PROPOSAL
Stacey MacleadRussiaAnna Fali NEW
Costa DilliardIndiaElwin Sharvill NEGOTIATION
Murillo MaletSpainAsiya Javayant NEGOTIATION
Antonio CaudyItalyOnyama Limba RENEWAL
Smith GlickArgentinaOnyama Limba NEW
Aditya KuskoCanadaStephen Shaw UNQUALIFIED
Jennifer AmigonCanadaAsiya Javayant PROPOSAL
Stacey MacleadArgentinaOnyama Limba NEGOTIATION
Ivar PaprockiUnited KingdomXuxue Feng RENEWAL
Silvio SlusarskiBrazilElwin Sharvill NEGOTIATION
Isabel BowleyBrazilAsiya Javayant RENEWAL
Darci PoquetteSpainAsiya Javayant UNQUALIFIED
Cody SaylorsFranceIoni Bowcher NEGOTIATION
Chavez BriddickBrazilAsiya Javayant QUALIFIED
Murillo MaletBrazilBernardo Dominic PROPOSAL
Wickens NestleFranceElwin Sharvill RENEWAL
Costa DilliardBrazilAsiya Javayant PROPOSAL
Mujtaba NickaGermanyBernardo Dominic PROPOSAL
Leja CaldareraArgentinaAsiya Javayant QUALIFIED
Leja CaldareraSpainAmy Elsner PROPOSAL
Sinclair WaycottUnited KingdomXuxue Feng NEW
Izzy GarufiUnited KingdomOnyama Limba RENEWAL
Munro FerenczItalyXuxue Feng NEGOTIATION
Antonio CaudySpainBernardo Dominic RENEWAL
Ashley DoeItalyIvan Magalhaes QUALIFIED
Chavez BriddickArgentinaXuxue Feng NEGOTIATION
Claire TollnerAustraliaBernardo Dominic PROPOSAL
Clifford RimRussiaAmy Elsner NEW
Adams MorascaJapanIvan Magalhaes NEGOTIATION
Silvio SlusarskiIndiaBernardo Dominic QUALIFIED
Clifford RimAustraliaAmy Elsner RENEWAL
Clifford RimFranceStephen Shaw UNQUALIFIED
Antonio CaudyCanadaElwin Sharvill NEGOTIATION
Silvio SlusarskiGermanyAmy Elsner UNQUALIFIED
Aruna FigeroaJapanXuxue Feng NEW
Ashley DoeSpainElwin Sharvill UNQUALIFIED
Julie StensethItalyStephen Shaw NEW
Smith GlickBrazilOnyama Limba NEW
Octavia MaletUnited KingdomBernardo Dominic NEW
Juan WieserIndiaAnna Fali NEW
James ButtArgentinaIvan Magalhaes UNQUALIFIED
Wickens NestleBrazilAnna Fali PROPOSAL
Chavez BriddickArgentinaAmy Elsner NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Chavez BriddickAustraliaAmy Elsner NEGOTIATION
Aika InouyeArgentinaAnna Fali PROPOSAL
Silvio SlusarskiFranceAnna Fali QUALIFIED
Murillo MaletFranceXuxue Feng RENEWAL
Cody SaylorsIndiaIvan Magalhaes PROPOSAL
Arvin AlbaresUnited KingdomAsiya Javayant RENEWAL
Rodrigues CampainJapanBernardo Dominic RENEWAL
Maria MarrierFranceAsiya Javayant QUALIFIED
Chavez BriddickItalyOnyama Limba RENEWAL
Maisha RulapaughRussiaStephen Shaw RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Rodrigues CampainGermany2026-04-17Truhlar And Truhlar Attys RENEWAL96Xuxue Feng
1001Cody SaylorsFrance2026-04-03Rousseaux, Michael Esq PROPOSAL94Asiya Javayant
1002Antonio CaudyCanada2026-04-08Truhlar And Truhlar Attys PROPOSAL26Anna Fali
1003Smith GlickItaly2026-04-08Feltz Printing Service NEW94Onyama Limba
1004Isabel BowleyGermany2026-03-30Morlong Associates QUALIFIED37Elwin Sharvill
1005Chavez BriddickCanada2026-04-12Feiner Bros NEW16Ivan Magalhaes
1006Maisha RulapaughRussia2026-03-28Chemel, James L Cpa UNQUALIFIED92Anna Fali
1007Ivar PaprockiCanada2026-04-05Commercial Press PROPOSAL26Asiya Javayant
1008Alejandro PerinUnited Kingdom2026-04-12Printing Dimensions NEGOTIATION17Stephen Shaw
1009Jones VocelkaRussia2026-04-21Benton, John B Jr NEGOTIATION99Amy Elsner
1010Misaki RoysterBrazil2026-04-23Chemel, James L Cpa UNQUALIFIED26Elwin Sharvill
1011Arvin AlbaresUnited Kingdom2026-04-11Commercial Press NEW16Ivan Magalhaes
1012Deepesh ChuiItaly2026-04-02Chanay, Jeffrey A Esq QUALIFIED81Asiya Javayant
1013Izzy GarufiSpain2026-04-16Buckley Miller Wright QUALIFIED47Asiya Javayant
1014Silvio SlusarskiRussia2026-04-24Chapman, Ross E Esq NEW73Bernardo Dominic
1015Stacey MacleadUnited Kingdom2026-04-10Chanay, Jeffrey A Esq RENEWAL67Xuxue Feng
1016Darci PoquetteIndia2026-04-10Chanay, Jeffrey A Esq QUALIFIED7Onyama Limba
1017Maisha RulapaughSpain2026-04-19Rangoni Of Florence UNQUALIFIED69Xuxue Feng
1018Stacey MacleadBrazil2026-04-09Chemel, James L Cpa QUALIFIED56Ivan Magalhaes
1019Misaki RoysterAustralia2026-04-23Truhlar And Truhlar Attys PROPOSAL83Amy Elsner
1020Ivar PaprockiIndia2026-04-06Truhlar And Truhlar Attys QUALIFIED21Onyama Limba
1021Maria MarrierBrazil2026-04-10Truhlar And Truhlar Attys PROPOSAL65Ivan Magalhaes
1022Mayumi KolmetzIndia2026-03-28Chapman, Ross E Esq UNQUALIFIED79Asiya Javayant
1023Tony FollerSpain2026-04-16Chapman, Ross E Esq UNQUALIFIED85Anna Fali
1024Munro FerenczFrance2026-04-15Buckley Miller Wright UNQUALIFIED9Elwin Sharvill
1025Darci PoquetteJapan2026-04-17Chemel, James L Cpa NEW42Asiya Javayant
1026Alejandro PerinJapan2026-04-03Chapman, Ross E Esq NEGOTIATION99Elwin Sharvill
1027Morrow RutaItaly2026-04-16Commercial Press PROPOSAL90Ioni Bowcher
1028Aika InouyeFrance2026-04-14Morlong Associates RENEWAL43Bernardo Dominic
1029Isabel BowleyFrance2026-04-16Commercial Press PROPOSAL27Onyama Limba
1030Tony FollerCanada2026-04-16Truhlar And Truhlar Attys UNQUALIFIED22Ioni Bowcher
1031Jefferson SchemmerIndia2026-04-14Morlong Associates NEGOTIATION73Onyama Limba
1032Maisha RulapaughIndia2026-04-11Chanay, Jeffrey A Esq UNQUALIFIED15Elwin Sharvill
1033Kaitlin OstroskyCanada2026-03-29Benton, John B Jr PROPOSAL31Bernardo Dominic
1034Leja CaldareraRussia2026-03-29King, Christopher A Esq NEGOTIATION57Onyama Limba
1035Maisha RulapaughBrazil2026-04-15Chapman, Ross E Esq RENEWAL82Asiya Javayant
1036Greenwood BologniaUnited Kingdom2026-04-09Feltz Printing Service PROPOSAL4Ivan Magalhaes
1037Misaki RoysterAustralia2026-04-19Commercial Press PROPOSAL94Stephen Shaw
1038Alejandro PerinBrazil2026-04-16Truhlar And Truhlar Attys UNQUALIFIED98Onyama Limba
1039Salvatore StockhamFrance2026-04-15Dorl, James J Esq NEGOTIATION34Onyama Limba
1040Stacey MacleadGermany2026-04-16Dorl, James J Esq UNQUALIFIED45Amy Elsner
1041Francesco ShinkoAustralia2026-04-16Truhlar And Truhlar Attys PROPOSAL25Ivan Magalhaes
1042Aruna FigeroaUnited Kingdom2026-04-26Feltz Printing Service UNQUALIFIED78Anna Fali
1043Emily WhobreyGermany2026-04-02Chanay, Jeffrey A Esq PROPOSAL68Bernardo Dominic
1044Claire TollnerSpain2026-04-14Dorl, James J Esq QUALIFIED0Amy Elsner
1045Antonio CaudyRussia2026-03-28Chemel, James L Cpa NEGOTIATION13Ioni Bowcher
1046Kaitlin OstroskyArgentina2026-04-24Benton, John B Jr NEW41Stephen Shaw
1047Misaki RoysterJapan2026-03-29Commercial Press QUALIFIED55Amy Elsner
1048Ricardo GauchoBrazil2026-04-03Dorl, James J Esq PROPOSAL45Xuxue Feng
1049Wickens NestleGermany2026-04-14Printing Dimensions RENEWAL57Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Ricardo GauchoUnited KingdomAsiya Javayant NEGOTIATION
Kadeem FlosiArgentinaIoni Bowcher PROPOSAL
Ashley DoeArgentinaXuxue Feng NEW
Adams MorascaSpainAnna Fali RENEWAL
Adams MorascaFranceOnyama Limba PROPOSAL
Murillo MaletAustraliaStephen Shaw QUALIFIED
Aika InouyeRussiaAmy Elsner NEGOTIATION
Izzy GarufiBrazilAsiya Javayant UNQUALIFIED
Chavez BriddickGermanyBernardo Dominic QUALIFIED
Johnson SergiSpainOnyama Limba QUALIFIED
Ashley DoeSpainIvan Magalhaes NEGOTIATION
Murillo MaletFranceStephen Shaw RENEWAL
Jones VocelkaCanadaAmy Elsner QUALIFIED
Darci PoquetteRussiaAnna Fali NEW
Costa DilliardItalyAnna Fali NEW
Silvio SlusarskiItalyAsiya Javayant NEGOTIATION
Murillo MaletGermanyElwin Sharvill NEGOTIATION
Aika InouyeBrazilXuxue Feng UNQUALIFIED
Faith GillianCanadaAnna Fali NEW
Maria MarrierFranceBernardo Dominic PROPOSAL
Cody SaylorsGermanyXuxue Feng QUALIFIED
Silvio SlusarskiBrazilAmy Elsner QUALIFIED
Aika InouyeIndiaBernardo Dominic QUALIFIED
Tony FollerCanadaIvan Magalhaes QUALIFIED
Jeanfrancois VenereBrazilAmy Elsner NEGOTIATION
Chavez BriddickItalyXuxue Feng PROPOSAL
Silvio SlusarskiArgentinaStephen Shaw PROPOSAL
Arvin AlbaresJapanAsiya Javayant RENEWAL
Jeanfrancois VenereGermanyAsiya Javayant RENEWAL
Kadeem FlosiArgentinaAmy Elsner RENEWAL
Leon OldroydIndiaXuxue Feng QUALIFIED
Maria MarrierAustraliaElwin Sharvill UNQUALIFIED
Smith GlickCanadaAnna Fali RENEWAL
Juan WieserCanadaBernardo Dominic NEW
Tony FollerUnited KingdomStephen Shaw NEW
Jeanfrancois VenereAustraliaElwin Sharvill PROPOSAL
Ashley DoeIndiaAmy Elsner NEGOTIATION
Leja CaldareraGermanyBernardo Dominic NEGOTIATION
Ashley DoeAustraliaXuxue Feng RENEWAL
Mayumi KolmetzBrazilIoni Bowcher PROPOSAL
Aruna FigeroaArgentinaIoni Bowcher NEW
Jones VocelkaJapanXuxue Feng QUALIFIED
Octavia MaletItalyOnyama Limba NEGOTIATION
Jones VocelkaAustraliaIvan Magalhaes QUALIFIED
Kaitlin OstroskyGermanyAnna Fali PROPOSAL
Stacey MacleadIndiaXuxue Feng UNQUALIFIED
Murillo MaletAustraliaBernardo Dominic PROPOSAL
Jeanfrancois VenereBrazilIvan Magalhaes RENEWAL
Maisha RulapaughFranceBernardo Dominic NEW
Kadeem FlosiRussiaAsiya Javayant NEGOTIATION
Frozen Columns
Name
Darci Poquette
Murillo Malet
Isabel Bowley
Aika Inouye
Claire Tollner
Clifford Rim
Adams Morasca
Mujtaba Nicka
Octavia Malet
Claire Tollner
Jefferson Schemmer
Francesco Shinko
Arvin Albares
Jefferson Schemmer
Munro Ferencz
Aditya Kusko
Deepesh Chui
Ivar Paprocki
Salvatore Stockham
Antonio Caudy
David Darakjy
Aruna Figeroa
Salvatore Stockham
Emily Whobrey
Jennifer Amigon
James Butt
James Butt
Leon Oldroyd
Izzy Garufi
Sinclair Waycott
Costa Dilliard
James Butt
Stacey Maclead
Cody Saylors
Morrow Ruta
Arvin Albares
Mujtaba Nicka
Emily Whobrey
Kadeem Flosi
Alejandro Perin
Greenwood Bolognia
Aika Inouye
Kaitlin Ostrosky
Jones Vocelka
Antonio Caudy
Greenwood Bolognia
Murillo Malet
Wickens Nestle
Aika Inouye
Aruna Figeroa
IdCountryDate
1000Canada2026-04-12
1001Argentina2026-03-28
1002United Kingdom2026-04-08
1003Japan2026-04-11
1004Spain2026-04-23
1005Argentina2026-04-06
1006France2026-04-17
1007Brazil2026-04-12
1008France2026-04-11
1009United Kingdom2026-04-03
1010Argentina2026-04-09
1011Australia2026-03-29
1012Canada2026-04-17
1013Spain2026-04-18
1014France2026-04-10
1015Spain2026-04-06
1016Australia2026-04-03
1017Japan2026-04-15
1018France2026-04-26
1019Canada2026-04-03
1020Spain2026-04-01
1021Brazil2026-04-08
1022Canada2026-03-30
1023Canada2026-04-22
1024France2026-04-15
1025Russia2026-04-24
1026Brazil2026-04-06
1027Russia2026-04-11
1028Japan2026-04-22
1029Brazil2026-04-12
1030Italy2026-04-16
1031France2026-04-17
1032Russia2026-04-02
1033Italy2026-04-01
1034Germany2026-04-16
1035Spain2026-04-07
1036United Kingdom2026-04-01
1037Canada2026-04-12
1038Italy2026-04-04
1039Brazil2026-04-24
1040Australia2026-03-28
1041Russia2026-04-05
1042Spain2026-04-14
1043Russia2026-04-13
1044Germany2026-04-25
1045Australia2026-04-23
1046France2026-03-28
1047United Kingdom2026-04-07
1048United Kingdom2026-04-09
1049Canada2026-03-31

On-Demand Data

NameIdCountryDate
Cody Saylors1000Italy2026-03-29
Claire Tollner1001Spain2026-04-11
Stacey Maclead1002Germany2026-04-24
Antonio Caudy1003Australia2026-04-06
Jefferson Schemmer1004Canada2026-03-28
Claire Tollner1005United Kingdom2026-04-22
Smith Glick1006Brazil2026-04-06
Antonio Caudy1007Australia2026-04-19
Adams Morasca1008Argentina2026-04-15
Smith Glick1009Germany2026-04-18
Mayumi Kolmetz1010Brazil2026-04-13
David Darakjy1011Russia2026-04-04
Chavez Briddick1012Argentina2026-03-30
Leon Oldroyd1013Canada2026-04-16
Deepesh Chui1014Germany2026-04-12
Adams Morasca1015India2026-04-26
Morrow Ruta1016Russia2026-04-01
Jennifer Amigon1017Canada2026-04-05
Jones Vocelka1018Japan2026-04-19
James Butt1019India2026-04-23
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Sinclair WaycottArgentinaIvan Magalhaes RENEWAL
Maisha RulapaughRussiaXuxue Feng RENEWAL
Jefferson SchemmerBrazilOnyama Limba PROPOSAL
Ashley DoeFranceElwin Sharvill NEGOTIATION
Sinclair WaycottCanadaXuxue Feng QUALIFIED
Jeanfrancois VenereFranceIvan Magalhaes UNQUALIFIED
Stacey MacleadRussiaStephen Shaw UNQUALIFIED
Octavia MaletIndiaOnyama Limba QUALIFIED
Deepesh ChuiFranceAsiya Javayant PROPOSAL
Jeanfrancois VenereItalyXuxue Feng PROPOSAL
Nicolas IturbideBrazilElwin Sharvill NEGOTIATION
Aika InouyeSpainOnyama Limba NEW
Smith GlickSpainIoni Bowcher QUALIFIED
Adams MorascaJapanBernardo Dominic NEW
James ButtBrazilAsiya Javayant NEGOTIATION
Alejandro PerinUnited KingdomIvan Magalhaes RENEWAL
Clifford RimArgentinaOnyama Limba NEW
Ricardo GauchoRussiaXuxue Feng NEGOTIATION
Aruna FigeroaFranceBernardo Dominic PROPOSAL
Morrow RutaAustraliaIoni Bowcher NEGOTIATION
Arvin AlbaresUnited KingdomStephen Shaw PROPOSAL
Sinclair WaycottJapanBernardo Dominic NEGOTIATION
Jefferson SchemmerSpainOnyama Limba QUALIFIED
Deepesh ChuiJapanAnna Fali QUALIFIED
Cody SaylorsArgentinaAsiya Javayant QUALIFIED
Octavia MaletUnited KingdomIoni Bowcher UNQUALIFIED
Ivar PaprockiIndiaIoni Bowcher RENEWAL
Tony FollerRussiaIoni Bowcher NEW
Aika InouyeIndiaAsiya Javayant QUALIFIED
Rodrigues CampainSpainBernardo Dominic QUALIFIED
Jeanfrancois VenereIndiaOnyama Limba RENEWAL
Aditya KuskoArgentinaBernardo Dominic RENEWAL
Jefferson SchemmerAustraliaStephen Shaw NEW
Salvatore StockhamGermanyStephen Shaw RENEWAL
Silvio SlusarskiAustraliaXuxue Feng UNQUALIFIED
Alejandro PerinUnited KingdomAnna Fali NEW
Maisha RulapaughCanadaBernardo Dominic UNQUALIFIED
Faith GillianAustraliaAmy Elsner NEW
Faith GillianGermanyIvan Magalhaes NEW
Aika InouyeIndiaXuxue Feng 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>