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
Munro FerenczArgentinaBernardo Dominic NEW
Misaki RoysterIndiaIoni Bowcher NEGOTIATION
Octavia MaletItalyElwin Sharvill NEGOTIATION
Tony FollerFranceStephen Shaw NEGOTIATION
David DarakjyIndiaIoni Bowcher QUALIFIED
Wickens NestleArgentinaAmy Elsner PROPOSAL
Greenwood BologniaRussiaAnna Fali NEW
Greenwood BologniaIndiaIvan Magalhaes NEGOTIATION
Mayumi KolmetzAustraliaIoni Bowcher QUALIFIED
Maisha RulapaughIndiaIvan Magalhaes RENEWAL
Deepesh ChuiSpainElwin Sharvill QUALIFIED
Greenwood BologniaRussiaOnyama Limba QUALIFIED
Julie StensethAustraliaBernardo Dominic PROPOSAL
Arvin AlbaresAustraliaElwin Sharvill PROPOSAL
Cody SaylorsJapanBernardo Dominic NEW
Murillo MaletSpainOnyama Limba NEW
Ivar PaprockiArgentinaElwin Sharvill UNQUALIFIED
Chavez BriddickJapanAsiya Javayant RENEWAL
David DarakjyItalyStephen Shaw PROPOSAL
Mayumi KolmetzFranceOnyama Limba NEW
Misaki RoysterFranceIoni Bowcher UNQUALIFIED
Aruna FigeroaAustraliaOnyama Limba NEW
David DarakjyItalyElwin Sharvill QUALIFIED
Smith GlickJapanXuxue Feng NEGOTIATION
Ivar PaprockiAustraliaBernardo Dominic NEGOTIATION
Juan WieserItalyStephen Shaw UNQUALIFIED
James ButtRussiaAsiya Javayant NEGOTIATION
Adams MorascaBrazilElwin Sharvill UNQUALIFIED
Costa DilliardArgentinaBernardo Dominic NEGOTIATION
Rodrigues CampainItalyBernardo Dominic NEW
Rodrigues CampainCanadaIoni Bowcher UNQUALIFIED
Jones VocelkaArgentinaXuxue Feng NEW
Juan WieserFranceBernardo Dominic NEW
David DarakjyArgentinaXuxue Feng NEW
Maria MarrierFranceElwin Sharvill UNQUALIFIED
Salvatore StockhamCanadaStephen Shaw RENEWAL
Morrow RutaJapanAnna Fali NEGOTIATION
Costa DilliardBrazilBernardo Dominic PROPOSAL
Rodrigues CampainAustraliaIvan Magalhaes QUALIFIED
Kadeem FlosiCanadaAmy Elsner NEGOTIATION
Clifford RimFranceAsiya Javayant PROPOSAL
Octavia MaletGermanyAsiya Javayant UNQUALIFIED
Morrow RutaCanadaElwin Sharvill UNQUALIFIED
Leja CaldareraArgentinaOnyama Limba NEGOTIATION
Kaitlin OstroskyBrazilXuxue Feng PROPOSAL
Juan WieserCanadaAnna Fali NEW
Jennifer AmigonAustraliaOnyama Limba UNQUALIFIED
Misaki RoysterRussiaAmy Elsner NEW
Johnson SergiIndiaAsiya Javayant UNQUALIFIED
Rodrigues CampainSpainIoni Bowcher PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Ivar PaprockiIndiaIoni Bowcher PROPOSAL
Smith GlickIndiaBernardo Dominic NEW
Jones VocelkaUnited KingdomIoni Bowcher NEGOTIATION
Costa DilliardBrazilBernardo Dominic RENEWAL
Jefferson SchemmerIndiaElwin Sharvill UNQUALIFIED
Mayumi KolmetzAustraliaAnna Fali QUALIFIED
Rodrigues CampainUnited KingdomBernardo Dominic PROPOSAL
Claire TollnerGermanyStephen Shaw UNQUALIFIED
Misaki RoysterBrazilXuxue Feng NEGOTIATION
Leon OldroydFranceAmy Elsner QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Kaitlin OstroskyRussia2026-06-10Buckley Miller Wright PROPOSAL44Stephen Shaw
1001Deepesh ChuiRussia2026-06-04Dorl, James J Esq QUALIFIED66Asiya Javayant
1002Maisha RulapaughRussia2026-05-26Chanay, Jeffrey A Esq UNQUALIFIED73Anna Fali
1003Mujtaba NickaCanada2026-05-22King, Christopher A Esq NEGOTIATION22Xuxue Feng
1004Claire TollnerAustralia2026-05-27Feiner Bros PROPOSAL6Asiya Javayant
1005Jefferson SchemmerArgentina2026-06-12Commercial Press PROPOSAL48Stephen Shaw
1006Darci PoquetteFrance2026-05-27Feiner Bros UNQUALIFIED43Ioni Bowcher
1007Stacey MacleadJapan2026-06-06Rousseaux, Michael Esq UNQUALIFIED43Asiya Javayant
1008Jeanfrancois VenereUnited Kingdom2026-05-23Benton, John B Jr NEW1Xuxue Feng
1009Clifford RimBrazil2026-06-01Chemel, James L Cpa NEW58Anna Fali
1010Alejandro PerinBrazil2026-06-11Dorl, James J Esq NEW78Elwin Sharvill
1011Kaitlin OstroskyRussia2026-06-11Morlong Associates PROPOSAL89Amy Elsner
1012Stacey MacleadRussia2026-05-25Dorl, James J Esq PROPOSAL87Anna Fali
1013Claire TollnerItaly2026-06-03Chemel, James L Cpa RENEWAL58Ivan Magalhaes
1014Rodrigues CampainRussia2026-06-15Truhlar And Truhlar Attys NEGOTIATION17Elwin Sharvill
1015Claire TollnerRussia2026-05-23Benton, John B Jr RENEWAL69Xuxue Feng
1016Jeanfrancois VenereSpain2026-05-29Truhlar And Truhlar Attys NEW18Asiya Javayant
1017Kaitlin OstroskyIndia2026-05-29Rousseaux, Michael Esq NEGOTIATION97Anna Fali
1018Aika InouyeRussia2026-06-10Benton, John B Jr NEW69Amy Elsner
1019Mujtaba NickaFrance2026-05-21Chanay, Jeffrey A Esq UNQUALIFIED50Asiya Javayant
1020Jefferson SchemmerItaly2026-06-02Truhlar And Truhlar Attys RENEWAL95Onyama Limba
1021Francesco ShinkoJapan2026-06-09Rousseaux, Michael Esq NEW46Elwin Sharvill
1022Jefferson SchemmerAustralia2026-05-25Chanay, Jeffrey A Esq QUALIFIED94Xuxue Feng
1023Juan WieserCanada2026-05-28Dorl, James J Esq QUALIFIED88Amy Elsner
1024Darci PoquetteFrance2026-06-01King, Christopher A Esq RENEWAL6Ioni Bowcher
1025Leon OldroydItaly2026-05-26Rangoni Of Florence QUALIFIED0Bernardo Dominic
1026Izzy GarufiFrance2026-06-08Rousseaux, Michael Esq RENEWAL33Onyama Limba
1027Aditya KuskoAustralia2026-05-27Benton, John B Jr QUALIFIED43Amy Elsner
1028Stacey MacleadSpain2026-06-01Feiner Bros NEGOTIATION13Ivan Magalhaes
1029Clifford RimIndia2026-05-23Rangoni Of Florence UNQUALIFIED39Stephen Shaw
1030Misaki RoysterRussia2026-06-04Chanay, Jeffrey A Esq NEGOTIATION44Elwin Sharvill
1031Antonio CaudyRussia2026-05-19Buckley Miller Wright RENEWAL67Bernardo Dominic
1032Chavez BriddickIndia2026-05-26Dorl, James J Esq NEGOTIATION6Ioni Bowcher
1033Costa DilliardBrazil2026-05-23Chanay, Jeffrey A Esq NEW95Onyama Limba
1034Jeanfrancois VenereItaly2026-06-03Feltz Printing Service NEW41Xuxue Feng
1035Leon OldroydGermany2026-06-14Commercial Press NEW35Onyama Limba
1036Murillo MaletUnited Kingdom2026-05-27Truhlar And Truhlar Attys NEGOTIATION5Ivan Magalhaes
1037Rodrigues CampainItaly2026-06-15Morlong Associates NEW45Ivan Magalhaes
1038Darci PoquetteJapan2026-06-04King, Christopher A Esq QUALIFIED99Asiya Javayant
1039Faith GillianBrazil2026-06-16Morlong Associates UNQUALIFIED31Ioni Bowcher
1040Murillo MaletUnited Kingdom2026-06-02Feltz Printing Service UNQUALIFIED54Xuxue Feng
1041Sinclair WaycottFrance2026-06-10Buckley Miller Wright QUALIFIED43Ivan Magalhaes
1042Jeanfrancois VenereGermany2026-05-24Chanay, Jeffrey A Esq NEGOTIATION84Stephen Shaw
1043Munro FerenczArgentina2026-06-15Rangoni Of Florence UNQUALIFIED28Asiya Javayant
1044Aruna FigeroaArgentina2026-06-06Chapman, Ross E Esq UNQUALIFIED92Ioni Bowcher
1045Izzy GarufiGermany2026-06-10Chanay, Jeffrey A Esq NEW39Elwin Sharvill
1046Faith GillianJapan2026-05-22Commercial Press NEW0Stephen Shaw
1047Isabel BowleyRussia2026-05-22Rangoni Of Florence UNQUALIFIED14Stephen Shaw
1048Cody SaylorsCanada2026-06-13Printing Dimensions QUALIFIED86Amy Elsner
1049Emily WhobreyBrazil2026-05-30Truhlar And Truhlar Attys UNQUALIFIED98Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Ashley DoeSpainAsiya Javayant RENEWAL
Costa DilliardItalyBernardo Dominic NEW
Darci PoquetteAustraliaElwin Sharvill UNQUALIFIED
Cody SaylorsIndiaOnyama Limba QUALIFIED
Deepesh ChuiCanadaElwin Sharvill RENEWAL
Ivar PaprockiJapanXuxue Feng QUALIFIED
Jefferson SchemmerGermanyElwin Sharvill RENEWAL
Arvin AlbaresGermanyAnna Fali QUALIFIED
James ButtArgentinaIoni Bowcher PROPOSAL
Smith GlickJapanXuxue Feng NEW
Mujtaba NickaGermanyElwin Sharvill QUALIFIED
Francesco ShinkoSpainXuxue Feng UNQUALIFIED
Isabel BowleyRussiaXuxue Feng PROPOSAL
Murillo MaletFranceIoni Bowcher NEGOTIATION
Claire TollnerItalyIvan Magalhaes NEGOTIATION
Morrow RutaIndiaElwin Sharvill RENEWAL
Cody SaylorsJapanXuxue Feng RENEWAL
Costa DilliardCanadaAnna Fali NEGOTIATION
Julie StensethUnited KingdomAnna Fali UNQUALIFIED
Adams MorascaItalyXuxue Feng RENEWAL
Munro FerenczArgentinaXuxue Feng NEGOTIATION
Octavia MaletArgentinaXuxue Feng NEGOTIATION
Claire TollnerUnited KingdomElwin Sharvill NEGOTIATION
Francesco ShinkoItalyAnna Fali NEGOTIATION
Ashley DoeRussiaAsiya Javayant UNQUALIFIED
Darci PoquetteArgentinaStephen Shaw RENEWAL
Misaki RoysterItalyIoni Bowcher UNQUALIFIED
Darci PoquetteFranceOnyama Limba UNQUALIFIED
Aika InouyeItalyAsiya Javayant RENEWAL
Maria MarrierRussiaElwin Sharvill UNQUALIFIED
Jefferson SchemmerJapanElwin Sharvill PROPOSAL
Leon OldroydBrazilXuxue Feng QUALIFIED
Kadeem FlosiBrazilElwin Sharvill NEGOTIATION
Leon OldroydArgentinaAnna Fali RENEWAL
Ashley DoeUnited KingdomAnna Fali NEW
Cody SaylorsCanadaIvan Magalhaes NEGOTIATION
Faith GillianFranceIvan Magalhaes UNQUALIFIED
Aditya KuskoFranceBernardo Dominic NEGOTIATION
Francesco ShinkoFranceElwin Sharvill UNQUALIFIED
Johnson SergiJapanAsiya Javayant QUALIFIED
Jeanfrancois VenereJapanIoni Bowcher UNQUALIFIED
Claire TollnerIndiaOnyama Limba NEGOTIATION
Ivar PaprockiJapanAsiya Javayant RENEWAL
Misaki RoysterGermanyElwin Sharvill RENEWAL
Jones VocelkaRussiaAnna Fali UNQUALIFIED
Leja CaldareraAustraliaBernardo Dominic PROPOSAL
Silvio SlusarskiGermanyXuxue Feng NEGOTIATION
Salvatore StockhamRussiaXuxue Feng PROPOSAL
Izzy GarufiGermanyBernardo Dominic PROPOSAL
Faith GillianRussiaOnyama Limba NEGOTIATION
Frozen Columns
Name
Morrow Ruta
Wickens Nestle
Claire Tollner
Adams Morasca
Kadeem Flosi
Kadeem Flosi
Jefferson Schemmer
Mujtaba Nicka
Adams Morasca
Ashley Doe
Deepesh Chui
Darci Poquette
Izzy Garufi
Johnson Sergi
Misaki Royster
Ivar Paprocki
Arvin Albares
Arvin Albares
Leja Caldarera
Aika Inouye
Jefferson Schemmer
Juan Wieser
Morrow Ruta
Jeanfrancois Venere
Cody Saylors
Deepesh Chui
David Darakjy
Mujtaba Nicka
Ricardo Gaucho
Jennifer Amigon
Faith Gillian
Claire Tollner
Salvatore Stockham
Silvio Slusarski
Morrow Ruta
Wickens Nestle
Kadeem Flosi
Tony Foller
Emily Whobrey
Julie Stenseth
Kaitlin Ostrosky
Chavez Briddick
Clifford Rim
Jennifer Amigon
Ricardo Gaucho
Leja Caldarera
Izzy Garufi
Francesco Shinko
Antonio Caudy
Juan Wieser
IdCountryDate
1000Spain2026-06-16
1001Germany2026-06-07
1002India2026-06-09
1003India2026-06-09
1004Russia2026-05-31
1005Russia2026-05-24
1006Argentina2026-05-21
1007Brazil2026-05-23
1008India2026-05-27
1009United Kingdom2026-05-24
1010Russia2026-06-15
1011Spain2026-05-20
1012Canada2026-05-28
1013Spain2026-06-15
1014Argentina2026-05-19
1015Argentina2026-06-17
1016Russia2026-05-24
1017France2026-06-09
1018Russia2026-06-02
1019Russia2026-05-27
1020Italy2026-05-23
1021Russia2026-05-25
1022Brazil2026-05-25
1023Russia2026-06-12
1024Australia2026-06-07
1025Italy2026-06-01
1026Germany2026-05-21
1027Spain2026-05-25
1028Spain2026-06-12
1029Spain2026-06-16
1030Canada2026-06-12
1031India2026-06-16
1032India2026-05-21
1033France2026-05-21
1034Spain2026-05-30
1035Germany2026-06-14
1036Argentina2026-05-27
1037Russia2026-06-06
1038Canada2026-05-19
1039Japan2026-06-17
1040Argentina2026-06-01
1041Brazil2026-05-30
1042Germany2026-06-10
1043Germany2026-06-15
1044Argentina2026-05-22
1045Argentina2026-06-01
1046Japan2026-05-24
1047United Kingdom2026-06-01
1048Spain2026-05-30
1049Spain2026-06-13

On-Demand Data

NameIdCountryDate
Nicolas Iturbide1000Australia2026-06-02
Aditya Kusko1001Russia2026-06-15
Salvatore Stockham1002Japan2026-06-06
Kadeem Flosi1003Germany2026-05-30
Costa Dilliard1004Brazil2026-05-21
Murillo Malet1005Russia2026-05-29
Alejandro Perin1006Germany2026-06-17
Juan Wieser1007Argentina2026-05-30
Munro Ferencz1008Japan2026-06-09
Aditya Kusko1009Italy2026-06-13
Johnson Sergi1010India2026-06-09
Mujtaba Nicka1011Spain2026-06-03
Octavia Malet1012Canada2026-06-07
Costa Dilliard1013India2026-06-07
Jennifer Amigon1014Brazil2026-05-22
Mayumi Kolmetz1015Japan2026-05-20
Francesco Shinko1016Italy2026-05-19
Chavez Briddick1017France2026-06-16
Jeanfrancois Venere1018Australia2026-06-03
Greenwood Bolognia1019France2026-06-07
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Maria MarrierArgentinaOnyama Limba UNQUALIFIED
Julie StensethBrazilAnna Fali NEW
Jennifer AmigonIndiaIvan Magalhaes NEW
Juan WieserCanadaIoni Bowcher QUALIFIED
Wickens NestleFranceBernardo Dominic NEGOTIATION
Wickens NestleFranceIvan Magalhaes RENEWAL
Ashley DoeUnited KingdomElwin Sharvill NEGOTIATION
Wickens NestleIndiaAnna Fali NEGOTIATION
Stacey MacleadCanadaStephen Shaw PROPOSAL
Emily WhobreyUnited KingdomAnna Fali QUALIFIED
Maria MarrierSpainAsiya Javayant RENEWAL
Ivar PaprockiUnited KingdomXuxue Feng NEW
David DarakjyRussiaElwin Sharvill NEW
Rodrigues CampainArgentinaXuxue Feng UNQUALIFIED
Darci PoquetteBrazilIoni Bowcher NEW
Juan WieserCanadaStephen Shaw UNQUALIFIED
Silvio SlusarskiJapanOnyama Limba UNQUALIFIED
Izzy GarufiFranceAmy Elsner RENEWAL
Jennifer AmigonArgentinaAsiya Javayant QUALIFIED
Silvio SlusarskiRussiaOnyama Limba PROPOSAL
Morrow RutaUnited KingdomAmy Elsner RENEWAL
Morrow RutaFranceAsiya Javayant UNQUALIFIED
Arvin AlbaresSpainBernardo Dominic UNQUALIFIED
Arvin AlbaresCanadaElwin Sharvill QUALIFIED
Maisha RulapaughIndiaXuxue Feng UNQUALIFIED
Wickens NestleUnited KingdomIoni Bowcher QUALIFIED
Misaki RoysterJapanIvan Magalhaes PROPOSAL
Juan WieserAustraliaIvan Magalhaes RENEWAL
Nicolas IturbideIndiaXuxue Feng QUALIFIED
Leja CaldareraSpainStephen Shaw UNQUALIFIED
Rodrigues CampainJapanStephen Shaw PROPOSAL
James ButtIndiaIvan Magalhaes PROPOSAL
Leja CaldareraGermanyBernardo Dominic NEW
Isabel BowleyCanadaStephen Shaw RENEWAL
Kadeem FlosiItalyIvan Magalhaes QUALIFIED
Deepesh ChuiFranceElwin Sharvill QUALIFIED
Murillo MaletAustraliaXuxue Feng NEGOTIATION
Chavez BriddickJapanXuxue Feng UNQUALIFIED
Salvatore StockhamCanadaAsiya Javayant PROPOSAL
Wickens NestleIndiaBernardo Dominic 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>