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 SaylorsBrazilIvan Magalhaes NEW
Morrow RutaUnited KingdomAmy Elsner NEW
Smith GlickCanadaBernardo Dominic PROPOSAL
Aditya KuskoIndiaAnna Fali NEW
Jefferson SchemmerAustraliaAmy Elsner RENEWAL
Tony FollerRussiaOnyama Limba RENEWAL
Leon OldroydSpainIoni Bowcher QUALIFIED
Smith GlickIndiaOnyama Limba PROPOSAL
Darci PoquetteCanadaAsiya Javayant QUALIFIED
Mayumi KolmetzUnited KingdomAnna Fali NEGOTIATION
Nicolas IturbideIndiaIvan Magalhaes RENEWAL
Johnson SergiUnited KingdomAmy Elsner UNQUALIFIED
Salvatore StockhamItalyIvan Magalhaes NEGOTIATION
Francesco ShinkoRussiaXuxue Feng PROPOSAL
Greenwood BologniaAustraliaAmy Elsner RENEWAL
Julie StensethSpainBernardo Dominic NEW
David DarakjyGermanyBernardo Dominic QUALIFIED
Salvatore StockhamBrazilElwin Sharvill UNQUALIFIED
Jones VocelkaItalyIoni Bowcher QUALIFIED
Stacey MacleadSpainAnna Fali RENEWAL
Misaki RoysterRussiaIoni Bowcher UNQUALIFIED
Salvatore StockhamJapanIvan Magalhaes NEW
Alejandro PerinBrazilAsiya Javayant QUALIFIED
David DarakjyCanadaAnna Fali UNQUALIFIED
Tony FollerItalyXuxue Feng UNQUALIFIED
David DarakjyIndiaAsiya Javayant NEW
Isabel BowleyJapanIoni Bowcher UNQUALIFIED
Misaki RoysterAustraliaAsiya Javayant NEGOTIATION
Costa DilliardFranceAsiya Javayant RENEWAL
Aruna FigeroaBrazilIvan Magalhaes QUALIFIED
Greenwood BologniaBrazilIvan Magalhaes NEGOTIATION
Octavia MaletRussiaAsiya Javayant NEGOTIATION
Emily WhobreyArgentinaAnna Fali NEGOTIATION
Ricardo GauchoSpainOnyama Limba UNQUALIFIED
Greenwood BologniaRussiaElwin Sharvill PROPOSAL
Johnson SergiSpainStephen Shaw QUALIFIED
Jones VocelkaRussiaOnyama Limba PROPOSAL
Jennifer AmigonUnited KingdomBernardo Dominic RENEWAL
Maria MarrierItalyAsiya Javayant UNQUALIFIED
Maisha RulapaughGermanyBernardo Dominic UNQUALIFIED
Alejandro PerinArgentinaAnna Fali NEW
Deepesh ChuiUnited KingdomElwin Sharvill QUALIFIED
Claire TollnerItalyAsiya Javayant UNQUALIFIED
Ricardo GauchoArgentinaIvan Magalhaes NEW
Chavez BriddickSpainElwin Sharvill RENEWAL
Francesco ShinkoIndiaBernardo Dominic NEW
Kaitlin OstroskyBrazilIvan Magalhaes UNQUALIFIED
Francesco ShinkoIndiaAmy Elsner NEW
Greenwood BologniaBrazilXuxue Feng PROPOSAL
Greenwood BologniaItalyBernardo Dominic PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Jennifer AmigonFranceAnna Fali NEGOTIATION
Aika InouyeGermanyXuxue Feng NEW
Arvin AlbaresGermanyXuxue Feng PROPOSAL
Mayumi KolmetzRussiaBernardo Dominic NEW
Claire TollnerCanadaXuxue Feng RENEWAL
Smith GlickAustraliaAsiya Javayant UNQUALIFIED
Deepesh ChuiIndiaOnyama Limba PROPOSAL
Murillo MaletItalyOnyama Limba NEGOTIATION
Darci PoquetteJapanAnna Fali QUALIFIED
Murillo MaletUnited KingdomXuxue Feng NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Faith GillianCanada2026-06-05King, Christopher A Esq QUALIFIED57Amy Elsner
1001Kadeem FlosiRussia2026-06-01Buckley Miller Wright NEW51Onyama Limba
1002Johnson SergiArgentina2026-06-02Chapman, Ross E Esq PROPOSAL52Onyama Limba
1003Tony FollerIndia2026-05-24Rousseaux, Michael Esq UNQUALIFIED54Stephen Shaw
1004Ricardo GauchoIndia2026-05-20Feltz Printing Service NEW45Ivan Magalhaes
1005Smith GlickUnited Kingdom2026-05-22Buckley Miller Wright PROPOSAL70Xuxue Feng
1006Julie StensethItaly2026-06-08Buckley Miller Wright NEW44Asiya Javayant
1007Aditya KuskoIndia2026-06-06Morlong Associates UNQUALIFIED21Elwin Sharvill
1008Chavez BriddickSpain2026-05-21Commercial Press NEGOTIATION2Asiya Javayant
1009Aruna FigeroaJapan2026-06-01Printing Dimensions UNQUALIFIED29Ioni Bowcher
1010Alejandro PerinJapan2026-06-10Chapman, Ross E Esq NEW76Onyama Limba
1011Jeanfrancois VenereUnited Kingdom2026-06-05Dorl, James J Esq QUALIFIED23Xuxue Feng
1012Izzy GarufiCanada2026-05-21Chapman, Ross E Esq NEGOTIATION43Elwin Sharvill
1013Juan WieserItaly2026-05-31Morlong Associates NEW52Stephen Shaw
1014Arvin AlbaresAustralia2026-06-06Chanay, Jeffrey A Esq RENEWAL99Anna Fali
1015Izzy GarufiGermany2026-06-14Rousseaux, Michael Esq UNQUALIFIED77Ivan Magalhaes
1016Costa DilliardArgentina2026-06-01Rangoni Of Florence UNQUALIFIED56Onyama Limba
1017Maria MarrierAustralia2026-06-04Rousseaux, Michael Esq RENEWAL44Ivan Magalhaes
1018Leon OldroydUnited Kingdom2026-05-18Feiner Bros NEGOTIATION55Ioni Bowcher
1019Smith GlickFrance2026-06-08Rousseaux, Michael Esq PROPOSAL19Asiya Javayant
1020Sinclair WaycottAustralia2026-05-29Chemel, James L Cpa QUALIFIED4Asiya Javayant
1021Aika InouyeGermany2026-06-12Chemel, James L Cpa UNQUALIFIED15Anna Fali
1022Johnson SergiArgentina2026-06-06Chemel, James L Cpa QUALIFIED84Amy Elsner
1023Jennifer AmigonAustralia2026-06-06Chanay, Jeffrey A Esq UNQUALIFIED67Stephen Shaw
1024Francesco ShinkoUnited Kingdom2026-05-17Feltz Printing Service NEGOTIATION34Bernardo Dominic
1025Alejandro PerinRussia2026-06-14Rousseaux, Michael Esq NEW63Onyama Limba
1026Aditya KuskoArgentina2026-06-05Commercial Press QUALIFIED95Anna Fali
1027Alejandro PerinRussia2026-06-04Commercial Press QUALIFIED72Ioni Bowcher
1028Salvatore StockhamUnited Kingdom2026-05-31Rousseaux, Michael Esq UNQUALIFIED69Stephen Shaw
1029Sinclair WaycottRussia2026-05-17Chapman, Ross E Esq RENEWAL26Ivan Magalhaes
1030Aruna FigeroaGermany2026-06-01King, Christopher A Esq QUALIFIED86Bernardo Dominic
1031Ricardo GauchoItaly2026-05-23Truhlar And Truhlar Attys RENEWAL16Ivan Magalhaes
1032Antonio CaudyFrance2026-05-23Rousseaux, Michael Esq UNQUALIFIED50Anna Fali
1033Adams MorascaAustralia2026-05-28Morlong Associates NEGOTIATION1Ioni Bowcher
1034Juan WieserSpain2026-06-04Feltz Printing Service NEW4Ivan Magalhaes
1035Isabel BowleyCanada2026-06-06Commercial Press UNQUALIFIED26Xuxue Feng
1036Aika InouyeItaly2026-06-02Buckley Miller Wright QUALIFIED79Anna Fali
1037Aruna FigeroaRussia2026-06-01Truhlar And Truhlar Attys QUALIFIED0Ivan Magalhaes
1038Aruna FigeroaGermany2026-06-09Chapman, Ross E Esq UNQUALIFIED19Amy Elsner
1039Tony FollerFrance2026-05-31Feiner Bros PROPOSAL51Xuxue Feng
1040Tony FollerCanada2026-05-27Rousseaux, Michael Esq RENEWAL85Amy Elsner
1041Arvin AlbaresCanada2026-06-08King, Christopher A Esq NEW81Bernardo Dominic
1042Antonio CaudyGermany2026-06-08Truhlar And Truhlar Attys NEGOTIATION73Stephen Shaw
1043Costa DilliardCanada2026-05-26Rangoni Of Florence QUALIFIED56Amy Elsner
1044Aditya KuskoGermany2026-05-29Commercial Press PROPOSAL30Anna Fali
1045Sinclair WaycottSpain2026-05-27Chapman, Ross E Esq UNQUALIFIED1Xuxue Feng
1046Greenwood BologniaArgentina2026-06-15Chanay, Jeffrey A Esq PROPOSAL33Xuxue Feng
1047Arvin AlbaresBrazil2026-05-28Dorl, James J Esq QUALIFIED67Elwin Sharvill
1048Izzy GarufiArgentina2026-06-04Benton, John B Jr UNQUALIFIED50Elwin Sharvill
1049Adams MorascaAustralia2026-05-31Chemel, James L Cpa UNQUALIFIED94Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Costa DilliardGermanyStephen Shaw QUALIFIED
Cody SaylorsCanadaBernardo Dominic UNQUALIFIED
Kaitlin OstroskyGermanyAnna Fali NEGOTIATION
Ivar PaprockiArgentinaXuxue Feng RENEWAL
Claire TollnerJapanAmy Elsner NEGOTIATION
Izzy GarufiItalyXuxue Feng NEGOTIATION
Sinclair WaycottArgentinaIoni Bowcher NEW
Salvatore StockhamCanadaAnna Fali QUALIFIED
Deepesh ChuiBrazilStephen Shaw RENEWAL
Adams MorascaAustraliaIvan Magalhaes NEW
Emily WhobreyUnited KingdomIvan Magalhaes QUALIFIED
Arvin AlbaresGermanyOnyama Limba NEW
Tony FollerUnited KingdomIvan Magalhaes NEGOTIATION
Chavez BriddickCanadaAnna Fali NEGOTIATION
Morrow RutaAustraliaAnna Fali NEGOTIATION
Kadeem FlosiFranceOnyama Limba PROPOSAL
Jones VocelkaItalyBernardo Dominic PROPOSAL
Nicolas IturbideFranceBernardo Dominic NEGOTIATION
Juan WieserBrazilAsiya Javayant NEW
Kaitlin OstroskyUnited KingdomXuxue Feng QUALIFIED
Ricardo GauchoSpainAsiya Javayant UNQUALIFIED
Faith GillianFranceElwin Sharvill UNQUALIFIED
Nicolas IturbideBrazilAsiya Javayant NEGOTIATION
Nicolas IturbideItalyXuxue Feng PROPOSAL
Stacey MacleadUnited KingdomAmy Elsner QUALIFIED
Chavez BriddickUnited KingdomIvan Magalhaes RENEWAL
Johnson SergiRussiaIoni Bowcher UNQUALIFIED
Morrow RutaAustraliaBernardo Dominic NEGOTIATION
Sinclair WaycottCanadaOnyama Limba UNQUALIFIED
Ricardo GauchoGermanyIvan Magalhaes NEGOTIATION
Emily WhobreyItalyAmy Elsner NEW
Stacey MacleadRussiaIvan Magalhaes NEW
Morrow RutaBrazilIvan Magalhaes QUALIFIED
Leon OldroydItalyIvan Magalhaes PROPOSAL
Silvio SlusarskiSpainIoni Bowcher PROPOSAL
Smith GlickFranceIoni Bowcher RENEWAL
Izzy GarufiArgentinaAmy Elsner NEW
Rodrigues CampainUnited KingdomIoni Bowcher UNQUALIFIED
Francesco ShinkoBrazilStephen Shaw PROPOSAL
Jefferson SchemmerBrazilBernardo Dominic NEW
Arvin AlbaresCanadaOnyama Limba PROPOSAL
Arvin AlbaresBrazilOnyama Limba PROPOSAL
Jones VocelkaSpainIoni Bowcher UNQUALIFIED
Rodrigues CampainArgentinaAmy Elsner RENEWAL
Alejandro PerinCanadaAsiya Javayant PROPOSAL
Wickens NestleSpainOnyama Limba QUALIFIED
David DarakjyAustraliaIvan Magalhaes PROPOSAL
Tony FollerSpainAnna Fali PROPOSAL
Ashley DoeGermanyAnna Fali PROPOSAL
Costa DilliardIndiaOnyama Limba NEGOTIATION
Frozen Columns
Name
Aika Inouye
Morrow Ruta
Antonio Caudy
Ivar Paprocki
Morrow Ruta
Emily Whobrey
Adams Morasca
Aruna Figeroa
Mujtaba Nicka
Maisha Rulapaugh
David Darakjy
Munro Ferencz
Faith Gillian
Juan Wieser
Wickens Nestle
Arvin Albares
Antonio Caudy
Alejandro Perin
Smith Glick
Ivar Paprocki
Adams Morasca
Jeanfrancois Venere
Deepesh Chui
Maria Marrier
Emily Whobrey
Wickens Nestle
Mayumi Kolmetz
Kaitlin Ostrosky
Ivar Paprocki
Ashley Doe
Ivar Paprocki
Izzy Garufi
David Darakjy
Jeanfrancois Venere
James Butt
Maisha Rulapaugh
Stacey Maclead
Cody Saylors
Ashley Doe
Smith Glick
Alejandro Perin
Sinclair Waycott
Nicolas Iturbide
Aika Inouye
Silvio Slusarski
Leon Oldroyd
Cody Saylors
Nicolas Iturbide
Salvatore Stockham
Jefferson Schemmer
IdCountryDate
1000Argentina2026-05-25
1001Brazil2026-06-15
1002Germany2026-05-24
1003Spain2026-05-19
1004Germany2026-06-05
1005Italy2026-05-26
1006Spain2026-06-07
1007Brazil2026-05-24
1008United Kingdom2026-06-12
1009France2026-06-10
1010Brazil2026-05-27
1011Japan2026-06-09
1012Australia2026-05-28
1013Russia2026-06-08
1014India2026-05-30
1015Japan2026-06-11
1016Italy2026-05-28
1017Brazil2026-05-18
1018Italy2026-05-26
1019United Kingdom2026-06-07
1020Canada2026-06-12
1021Australia2026-05-24
1022Russia2026-05-23
1023Germany2026-05-24
1024Russia2026-05-26
1025Brazil2026-06-14
1026Brazil2026-06-15
1027France2026-05-24
1028Canada2026-05-26
1029India2026-05-20
1030Japan2026-05-22
1031Australia2026-06-13
1032Germany2026-05-26
1033India2026-05-26
1034Canada2026-05-19
1035Italy2026-06-09
1036Australia2026-05-28
1037Brazil2026-05-24
1038Germany2026-06-14
1039United Kingdom2026-06-07
1040Spain2026-05-27
1041Argentina2026-05-22
1042India2026-05-18
1043Spain2026-06-05
1044Japan2026-05-18
1045Russia2026-06-12
1046India2026-05-21
1047Argentina2026-05-31
1048Australia2026-06-08
1049France2026-05-30

On-Demand Data

NameIdCountryDate
Murillo Malet1000Brazil2026-06-04
Kadeem Flosi1001Argentina2026-05-27
Wickens Nestle1002Germany2026-05-17
Izzy Garufi1003Italy2026-05-22
Francesco Shinko1004Russia2026-06-09
Jefferson Schemmer1005Germany2026-06-11
Munro Ferencz1006India2026-05-26
Murillo Malet1007Japan2026-06-03
Ashley Doe1008United Kingdom2026-06-09
Aika Inouye1009Canada2026-06-03
Chavez Briddick1010Germany2026-05-21
Johnson Sergi1011Russia2026-06-14
James Butt1012Russia2026-05-19
Tony Foller1013Germany2026-06-05
Jefferson Schemmer1014Canada2026-05-25
Mayumi Kolmetz1015United Kingdom2026-05-18
Maria Marrier1016Japan2026-06-07
Morrow Ruta1017Argentina2026-06-11
Salvatore Stockham1018Brazil2026-05-18
David Darakjy1019Canada2026-05-31
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Mujtaba NickaFranceIvan Magalhaes QUALIFIED
Juan WieserIndiaXuxue Feng RENEWAL
Arvin AlbaresSpainBernardo Dominic NEW
Arvin AlbaresIndiaStephen Shaw NEW
Mujtaba NickaFranceOnyama Limba PROPOSAL
Silvio SlusarskiAustraliaIvan Magalhaes PROPOSAL
Salvatore StockhamSpainBernardo Dominic NEGOTIATION
Ricardo GauchoArgentinaAmy Elsner QUALIFIED
James ButtAustraliaOnyama Limba UNQUALIFIED
Rodrigues CampainArgentinaStephen Shaw NEGOTIATION
Izzy GarufiArgentinaBernardo Dominic NEGOTIATION
Kadeem FlosiIndiaAnna Fali UNQUALIFIED
Cody SaylorsArgentinaAsiya Javayant NEW
Salvatore StockhamIndiaBernardo Dominic QUALIFIED
Deepesh ChuiIndiaIoni Bowcher NEGOTIATION
Mujtaba NickaArgentinaIvan Magalhaes PROPOSAL
Tony FollerRussiaXuxue Feng UNQUALIFIED
Jones VocelkaJapanXuxue Feng UNQUALIFIED
Greenwood BologniaAustraliaAmy Elsner NEW
Ricardo GauchoCanadaElwin Sharvill UNQUALIFIED
Jones VocelkaRussiaBernardo Dominic PROPOSAL
Morrow RutaJapanXuxue Feng RENEWAL
Adams MorascaGermanyAmy Elsner UNQUALIFIED
Mayumi KolmetzRussiaXuxue Feng NEW
Silvio SlusarskiRussiaStephen Shaw QUALIFIED
Rodrigues CampainJapanStephen Shaw RENEWAL
Ivar PaprockiBrazilIoni Bowcher NEGOTIATION
Maria MarrierUnited KingdomIvan Magalhaes PROPOSAL
Tony FollerJapanIoni Bowcher QUALIFIED
Francesco ShinkoRussiaAsiya Javayant QUALIFIED
Jefferson SchemmerFranceAsiya Javayant NEW
Munro FerenczArgentinaXuxue Feng UNQUALIFIED
Clifford RimUnited KingdomElwin Sharvill NEGOTIATION
Isabel BowleyAustraliaAmy Elsner NEGOTIATION
Clifford RimFranceElwin Sharvill NEGOTIATION
Aditya KuskoJapanIoni Bowcher UNQUALIFIED
Aditya KuskoAustraliaAsiya Javayant NEGOTIATION
Jeanfrancois VenereArgentinaXuxue Feng UNQUALIFIED
Chavez BriddickJapanXuxue Feng NEW
Salvatore StockhamSpainBernardo Dominic RENEWAL

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