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
Jones VocelkaAustraliaIoni Bowcher PROPOSAL
Murillo MaletItalyAnna Fali PROPOSAL
Leja CaldareraBrazilAsiya Javayant QUALIFIED
Stacey MacleadRussiaXuxue Feng UNQUALIFIED
Antonio CaudyFranceElwin Sharvill UNQUALIFIED
Nicolas IturbideRussiaOnyama Limba NEW
David DarakjyRussiaIoni Bowcher RENEWAL
Mayumi KolmetzBrazilAmy Elsner UNQUALIFIED
Leon OldroydCanadaBernardo Dominic UNQUALIFIED
Arvin AlbaresGermanyElwin Sharvill QUALIFIED
Costa DilliardBrazilXuxue Feng NEGOTIATION
Munro FerenczIndiaAsiya Javayant QUALIFIED
Francesco ShinkoGermanyElwin Sharvill NEGOTIATION
Mayumi KolmetzIndiaIvan Magalhaes RENEWAL
Greenwood BologniaJapanStephen Shaw UNQUALIFIED
Adams MorascaArgentinaOnyama Limba UNQUALIFIED
Misaki RoysterArgentinaBernardo Dominic RENEWAL
Emily WhobreyUnited KingdomAmy Elsner PROPOSAL
Aruna FigeroaArgentinaAnna Fali NEGOTIATION
Mayumi KolmetzRussiaIvan Magalhaes NEGOTIATION
Johnson SergiAustraliaStephen Shaw RENEWAL
Salvatore StockhamAustraliaIvan Magalhaes UNQUALIFIED
Adams MorascaArgentinaBernardo Dominic QUALIFIED
Jeanfrancois VenereGermanyIvan Magalhaes UNQUALIFIED
Kaitlin OstroskyUnited KingdomStephen Shaw UNQUALIFIED
Juan WieserGermanyAnna Fali NEW
Mujtaba NickaFranceIvan Magalhaes UNQUALIFIED
Arvin AlbaresFranceOnyama Limba PROPOSAL
James ButtRussiaBernardo Dominic QUALIFIED
Arvin AlbaresFranceOnyama Limba UNQUALIFIED
Octavia MaletSpainIvan Magalhaes RENEWAL
David DarakjyItalyIvan Magalhaes NEW
Deepesh ChuiItalyAsiya Javayant NEW
Claire TollnerFranceStephen Shaw NEGOTIATION
Salvatore StockhamJapanStephen Shaw UNQUALIFIED
Claire TollnerIndiaXuxue Feng QUALIFIED
Smith GlickItalyIvan Magalhaes PROPOSAL
Salvatore StockhamUnited KingdomStephen Shaw QUALIFIED
Jones VocelkaUnited KingdomStephen Shaw RENEWAL
Aika InouyeSpainAsiya Javayant PROPOSAL
Jeanfrancois VenereCanadaStephen Shaw RENEWAL
Isabel BowleyRussiaXuxue Feng NEW
Kadeem FlosiBrazilIvan Magalhaes PROPOSAL
Faith GillianRussiaAsiya Javayant RENEWAL
Mujtaba NickaAustraliaIvan Magalhaes QUALIFIED
David DarakjyAustraliaElwin Sharvill UNQUALIFIED
Silvio SlusarskiCanadaOnyama Limba RENEWAL
Sinclair WaycottJapanAmy Elsner NEGOTIATION
Stacey MacleadBrazilOnyama Limba NEW
Clifford RimIndiaAmy Elsner NEW
Horizontal
NameCountryRepresentativeStatus
Izzy GarufiGermanyOnyama Limba UNQUALIFIED
Claire TollnerRussiaBernardo Dominic PROPOSAL
Arvin AlbaresItalyAmy Elsner NEGOTIATION
Adams MorascaGermanyIvan Magalhaes UNQUALIFIED
Smith GlickCanadaElwin Sharvill QUALIFIED
Salvatore StockhamSpainXuxue Feng QUALIFIED
Johnson SergiCanadaElwin Sharvill QUALIFIED
Clifford RimItalyIvan Magalhaes QUALIFIED
Cody SaylorsRussiaStephen Shaw QUALIFIED
Misaki RoysterFranceOnyama Limba QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Emily WhobreyGermany2026-05-05Commercial Press UNQUALIFIED56Xuxue Feng
1001Clifford RimCanada2026-05-01Feltz Printing Service NEGOTIATION11Ivan Magalhaes
1002Ashley DoeUnited Kingdom2026-04-18Benton, John B Jr PROPOSAL27Anna Fali
1003Adams MorascaJapan2026-04-26Benton, John B Jr PROPOSAL33Ivan Magalhaes
1004Munro FerenczBrazil2026-05-02Printing Dimensions QUALIFIED10Xuxue Feng
1005Isabel BowleyCanada2026-05-01Benton, John B Jr PROPOSAL23Anna Fali
1006Jennifer AmigonBrazil2026-04-27Rangoni Of Florence NEW38Bernardo Dominic
1007Jennifer AmigonCanada2026-05-09Dorl, James J Esq UNQUALIFIED40Amy Elsner
1008Jeanfrancois VenereIndia2026-04-21Benton, John B Jr QUALIFIED24Elwin Sharvill
1009Johnson SergiItaly2026-04-30Dorl, James J Esq NEW32Ivan Magalhaes
1010Misaki RoysterBrazil2026-04-27Chapman, Ross E Esq UNQUALIFIED55Xuxue Feng
1011Darci PoquetteCanada2026-04-26Chemel, James L Cpa NEW44Ivan Magalhaes
1012Jones VocelkaSpain2026-04-22Commercial Press UNQUALIFIED8Asiya Javayant
1013Jennifer AmigonGermany2026-04-17Chemel, James L Cpa QUALIFIED99Onyama Limba
1014Silvio SlusarskiJapan2026-05-01Rangoni Of Florence QUALIFIED62Amy Elsner
1015Salvatore StockhamFrance2026-04-20Chemel, James L Cpa NEGOTIATION57Onyama Limba
1016Sinclair WaycottArgentina2026-04-30Chapman, Ross E Esq PROPOSAL79Anna Fali
1017Munro FerenczUnited Kingdom2026-04-20Rangoni Of Florence NEW90Stephen Shaw
1018Jefferson SchemmerGermany2026-05-09Morlong Associates RENEWAL44Ivan Magalhaes
1019Ricardo GauchoIndia2026-04-26King, Christopher A Esq NEW34Ivan Magalhaes
1020Kaitlin OstroskyCanada2026-04-22King, Christopher A Esq PROPOSAL80Amy Elsner
1021Isabel BowleyGermany2026-05-05Benton, John B Jr QUALIFIED7Elwin Sharvill
1022Deepesh ChuiItaly2026-05-07King, Christopher A Esq UNQUALIFIED10Elwin Sharvill
1023Jones VocelkaBrazil2026-04-19Buckley Miller Wright RENEWAL6Elwin Sharvill
1024Nicolas IturbideSpain2026-04-24Truhlar And Truhlar Attys PROPOSAL74Ivan Magalhaes
1025Isabel BowleySpain2026-05-06Buckley Miller Wright UNQUALIFIED59Ivan Magalhaes
1026Francesco ShinkoJapan2026-04-26Buckley Miller Wright UNQUALIFIED14Asiya Javayant
1027Mayumi KolmetzJapan2026-04-25Printing Dimensions UNQUALIFIED58Onyama Limba
1028Jeanfrancois VenereGermany2026-04-16Chemel, James L Cpa NEW99Elwin Sharvill
1029Salvatore StockhamRussia2026-05-07Buckley Miller Wright NEW62Amy Elsner
1030Aditya KuskoRussia2026-04-27Buckley Miller Wright NEW80Xuxue Feng
1031Francesco ShinkoGermany2026-05-08Benton, John B Jr NEGOTIATION13Asiya Javayant
1032Julie StensethAustralia2026-04-23Truhlar And Truhlar Attys NEGOTIATION89Bernardo Dominic
1033Johnson SergiItaly2026-04-20Feiner Bros NEW62Onyama Limba
1034Clifford RimIndia2026-04-22Dorl, James J Esq NEW76Ivan Magalhaes
1035Cody SaylorsGermany2026-05-04Benton, John B Jr PROPOSAL89Xuxue Feng
1036Jefferson SchemmerUnited Kingdom2026-05-02Rousseaux, Michael Esq UNQUALIFIED23Asiya Javayant
1037Johnson SergiArgentina2026-04-16Chapman, Ross E Esq QUALIFIED46Ivan Magalhaes
1038Faith GillianIndia2026-04-25Rousseaux, Michael Esq NEW96Onyama Limba
1039Chavez BriddickRussia2026-04-25Chanay, Jeffrey A Esq QUALIFIED73Onyama Limba
1040Clifford RimJapan2026-04-22Rangoni Of Florence QUALIFIED7Ivan Magalhaes
1041Sinclair WaycottItaly2026-05-03Chanay, Jeffrey A Esq UNQUALIFIED74Asiya Javayant
1042Salvatore StockhamFrance2026-04-17Commercial Press PROPOSAL35Onyama Limba
1043David DarakjyGermany2026-05-09King, Christopher A Esq NEW7Stephen Shaw
1044Murillo MaletFrance2026-04-13Chapman, Ross E Esq NEGOTIATION5Onyama Limba
1045Salvatore StockhamIndia2026-04-27Rousseaux, Michael Esq UNQUALIFIED91Asiya Javayant
1046Leon OldroydCanada2026-04-28Rousseaux, Michael Esq NEW98Ivan Magalhaes
1047Aditya KuskoBrazil2026-04-29Dorl, James J Esq RENEWAL61Xuxue Feng
1048Wickens NestleAustralia2026-05-08Commercial Press PROPOSAL31Anna Fali
1049Munro FerenczIndia2026-05-06Rousseaux, Michael Esq UNQUALIFIED0Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Smith GlickGermanyAnna Fali RENEWAL
Claire TollnerRussiaElwin Sharvill NEW
Kadeem FlosiGermanyAmy Elsner NEGOTIATION
Juan WieserRussiaIoni Bowcher NEGOTIATION
Faith GillianRussiaStephen Shaw QUALIFIED
Salvatore StockhamSpainXuxue Feng UNQUALIFIED
Wickens NestleJapanAmy Elsner QUALIFIED
Maria MarrierSpainStephen Shaw UNQUALIFIED
Emily WhobreyArgentinaAmy Elsner QUALIFIED
Silvio SlusarskiJapanIoni Bowcher RENEWAL
Wickens NestleJapanBernardo Dominic UNQUALIFIED
David DarakjyCanadaElwin Sharvill NEW
Mujtaba NickaItalyElwin Sharvill NEGOTIATION
Tony FollerItalyIvan Magalhaes NEGOTIATION
Ivar PaprockiFranceOnyama Limba PROPOSAL
Kaitlin OstroskyRussiaOnyama Limba RENEWAL
Kaitlin OstroskyUnited KingdomBernardo Dominic QUALIFIED
Darci PoquetteAustraliaIoni Bowcher RENEWAL
Cody SaylorsBrazilAmy Elsner UNQUALIFIED
Juan WieserIndiaAsiya Javayant NEW
Maisha RulapaughJapanXuxue Feng NEGOTIATION
Octavia MaletArgentinaAsiya Javayant UNQUALIFIED
Aditya KuskoFranceXuxue Feng PROPOSAL
Rodrigues CampainBrazilOnyama Limba PROPOSAL
Smith GlickGermanyAnna Fali UNQUALIFIED
Arvin AlbaresJapanStephen Shaw UNQUALIFIED
Jones VocelkaRussiaAsiya Javayant UNQUALIFIED
Morrow RutaUnited KingdomOnyama Limba RENEWAL
Deepesh ChuiAustraliaStephen Shaw RENEWAL
Arvin AlbaresRussiaBernardo Dominic NEGOTIATION
Leja CaldareraGermanyStephen Shaw NEW
James ButtUnited KingdomAmy Elsner NEGOTIATION
Antonio CaudySpainIvan Magalhaes RENEWAL
Aditya KuskoAustraliaIvan Magalhaes NEW
Chavez BriddickAustraliaIvan Magalhaes NEGOTIATION
Sinclair WaycottFranceIvan Magalhaes NEW
Antonio CaudyRussiaOnyama Limba QUALIFIED
Aruna FigeroaCanadaIvan Magalhaes RENEWAL
Silvio SlusarskiAustraliaOnyama Limba QUALIFIED
Kaitlin OstroskySpainBernardo Dominic RENEWAL
David DarakjyRussiaIvan Magalhaes NEGOTIATION
Morrow RutaArgentinaBernardo Dominic NEW
Ricardo GauchoCanadaOnyama Limba RENEWAL
Aika InouyeJapanElwin Sharvill NEGOTIATION
Aruna FigeroaRussiaStephen Shaw QUALIFIED
Munro FerenczArgentinaAmy Elsner NEGOTIATION
Nicolas IturbideIndiaAnna Fali NEGOTIATION
Jennifer AmigonFranceOnyama Limba PROPOSAL
Johnson SergiGermanyBernardo Dominic QUALIFIED
Francesco ShinkoFranceOnyama Limba UNQUALIFIED
Frozen Columns
Name
Munro Ferencz
James Butt
Cody Saylors
Jennifer Amigon
Francesco Shinko
David Darakjy
Jefferson Schemmer
Aruna Figeroa
Jeanfrancois Venere
Antonio Caudy
Octavia Malet
Misaki Royster
Maisha Rulapaugh
Mayumi Kolmetz
Mujtaba Nicka
Kadeem Flosi
Stacey Maclead
Julie Stenseth
Murillo Malet
Jeanfrancois Venere
Wickens Nestle
Murillo Malet
Arvin Albares
Misaki Royster
Julie Stenseth
Sinclair Waycott
Murillo Malet
Juan Wieser
Julie Stenseth
Faith Gillian
Clifford Rim
Octavia Malet
Johnson Sergi
Stacey Maclead
Francesco Shinko
Francesco Shinko
Silvio Slusarski
Costa Dilliard
Deepesh Chui
Kaitlin Ostrosky
Ricardo Gaucho
Stacey Maclead
Jeanfrancois Venere
Juan Wieser
Morrow Ruta
Kaitlin Ostrosky
Claire Tollner
Morrow Ruta
Octavia Malet
Cody Saylors
IdCountryDate
1000Japan2026-04-10
1001Argentina2026-04-15
1002Germany2026-05-09
1003Spain2026-04-15
1004Argentina2026-04-18
1005Canada2026-05-08
1006Canada2026-04-18
1007Canada2026-05-09
1008France2026-05-08
1009Australia2026-04-17
1010Germany2026-04-23
1011Russia2026-04-24
1012Italy2026-04-29
1013Brazil2026-04-12
1014France2026-04-12
1015Argentina2026-05-01
1016Canada2026-05-08
1017United Kingdom2026-04-17
1018Canada2026-04-28
1019United Kingdom2026-04-29
1020Italy2026-04-29
1021India2026-04-11
1022Italy2026-04-13
1023Canada2026-04-19
1024Spain2026-05-05
1025Canada2026-05-05
1026Argentina2026-05-07
1027Brazil2026-04-15
1028Australia2026-04-26
1029Spain2026-04-26
1030Australia2026-04-27
1031Germany2026-04-26
1032Russia2026-04-13
1033France2026-04-13
1034India2026-04-29
1035Australia2026-04-21
1036Canada2026-04-17
1037Canada2026-05-03
1038Argentina2026-04-11
1039India2026-04-14
1040Canada2026-04-14
1041Japan2026-04-17
1042India2026-04-12
1043Brazil2026-04-18
1044United Kingdom2026-04-19
1045Australia2026-04-13
1046Argentina2026-04-21
1047Russia2026-05-07
1048India2026-04-14
1049Brazil2026-04-23

On-Demand Data

NameIdCountryDate
Chavez Briddick1000Canada2026-05-09
Arvin Albares1001Brazil2026-04-10
Ashley Doe1002United Kingdom2026-05-01
Jennifer Amigon1003Australia2026-05-07
Leon Oldroyd1004United Kingdom2026-04-12
Murillo Malet1005Brazil2026-04-27
James Butt1006Australia2026-04-26
Jones Vocelka1007Argentina2026-04-12
Greenwood Bolognia1008Italy2026-04-22
Greenwood Bolognia1009Russia2026-05-02
Leon Oldroyd1010Australia2026-04-25
Jefferson Schemmer1011Spain2026-05-01
Nicolas Iturbide1012Italy2026-04-18
Johnson Sergi1013Germany2026-05-07
Murillo Malet1014Italy2026-04-21
Leja Caldarera1015Canada2026-05-05
Maisha Rulapaugh1016Russia2026-04-11
Julie Stenseth1017Brazil2026-05-01
Silvio Slusarski1018Spain2026-04-12
Ricardo Gaucho1019India2026-04-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Johnson SergiJapanStephen Shaw UNQUALIFIED
Morrow RutaRussiaIvan Magalhaes UNQUALIFIED
Alejandro PerinItalyBernardo Dominic RENEWAL
Wickens NestleJapanOnyama Limba QUALIFIED
Greenwood BologniaCanadaAsiya Javayant QUALIFIED
James ButtIndiaBernardo Dominic QUALIFIED
Munro FerenczFranceStephen Shaw UNQUALIFIED
Maria MarrierRussiaAsiya Javayant NEGOTIATION
Murillo MaletAustraliaOnyama Limba UNQUALIFIED
David DarakjySpainAnna Fali UNQUALIFIED
Jefferson SchemmerAustraliaElwin Sharvill NEGOTIATION
Mujtaba NickaAustraliaIvan Magalhaes RENEWAL
Maria MarrierGermanyXuxue Feng UNQUALIFIED
Antonio CaudySpainXuxue Feng NEGOTIATION
Deepesh ChuiFranceElwin Sharvill RENEWAL
Leon OldroydCanadaIoni Bowcher QUALIFIED
Johnson SergiAustraliaStephen Shaw NEW
Cody SaylorsIndiaAmy Elsner RENEWAL
Johnson SergiArgentinaIoni Bowcher NEGOTIATION
Murillo MaletArgentinaIvan Magalhaes UNQUALIFIED
Jeanfrancois VenereIndiaElwin Sharvill RENEWAL
Tony FollerIndiaBernardo Dominic UNQUALIFIED
Darci PoquetteCanadaBernardo Dominic UNQUALIFIED
Emily WhobreyCanadaStephen Shaw NEGOTIATION
Jennifer AmigonGermanyAmy Elsner QUALIFIED
Tony FollerAustraliaBernardo Dominic UNQUALIFIED
Aika InouyeUnited KingdomAnna Fali RENEWAL
Deepesh ChuiGermanyElwin Sharvill UNQUALIFIED
Kadeem FlosiUnited KingdomAsiya Javayant QUALIFIED
Aditya KuskoArgentinaAsiya Javayant UNQUALIFIED
Antonio CaudySpainBernardo Dominic RENEWAL
Jefferson SchemmerArgentinaElwin Sharvill RENEWAL
Ashley DoeItalyAmy Elsner NEGOTIATION
Kadeem FlosiJapanElwin Sharvill RENEWAL
Jeanfrancois VenereSpainIoni Bowcher PROPOSAL
Rodrigues CampainArgentinaStephen Shaw NEW
Adams MorascaCanadaBernardo Dominic NEW
Tony FollerJapanBernardo Dominic UNQUALIFIED
Juan WieserFranceXuxue Feng NEGOTIATION
Jones VocelkaArgentinaIvan Magalhaes 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>