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
Kadeem FlosiFranceOnyama Limba NEGOTIATION
Jeanfrancois VenereBrazilXuxue Feng UNQUALIFIED
Costa DilliardRussiaXuxue Feng RENEWAL
Johnson SergiJapanAsiya Javayant NEGOTIATION
Aika InouyeBrazilAsiya Javayant QUALIFIED
Leja CaldareraArgentinaIoni Bowcher QUALIFIED
Kaitlin OstroskyGermanyElwin Sharvill RENEWAL
Isabel BowleyFranceAsiya Javayant NEW
Tony FollerRussiaOnyama Limba UNQUALIFIED
Chavez BriddickUnited KingdomAsiya Javayant NEGOTIATION
Murillo MaletRussiaAmy Elsner RENEWAL
Antonio CaudyJapanXuxue Feng NEW
Costa DilliardSpainXuxue Feng PROPOSAL
Maria MarrierFranceXuxue Feng NEW
Leja CaldareraUnited KingdomXuxue Feng PROPOSAL
Tony FollerRussiaXuxue Feng QUALIFIED
Mujtaba NickaArgentinaAnna Fali UNQUALIFIED
Ivar PaprockiCanadaAmy Elsner NEGOTIATION
Francesco ShinkoFranceAmy Elsner QUALIFIED
Rodrigues CampainFranceElwin Sharvill NEW
Rodrigues CampainJapanXuxue Feng NEGOTIATION
Ashley DoeFranceBernardo Dominic QUALIFIED
Jeanfrancois VenereItalyIoni Bowcher PROPOSAL
Chavez BriddickCanadaOnyama Limba PROPOSAL
Murillo MaletBrazilOnyama Limba NEGOTIATION
Jennifer AmigonBrazilIvan Magalhaes RENEWAL
Jones VocelkaCanadaBernardo Dominic QUALIFIED
Antonio CaudyJapanAnna Fali RENEWAL
Salvatore StockhamUnited KingdomElwin Sharvill PROPOSAL
Jennifer AmigonRussiaBernardo Dominic NEGOTIATION
Nicolas IturbideUnited KingdomBernardo Dominic NEGOTIATION
Ricardo GauchoRussiaIvan Magalhaes UNQUALIFIED
Emily WhobreyItalyElwin Sharvill QUALIFIED
Arvin AlbaresGermanyAnna Fali NEGOTIATION
Emily WhobreyArgentinaOnyama Limba QUALIFIED
Faith GillianGermanyXuxue Feng RENEWAL
Julie StensethBrazilAmy Elsner NEGOTIATION
Izzy GarufiSpainStephen Shaw RENEWAL
Jennifer AmigonGermanyIoni Bowcher UNQUALIFIED
Antonio CaudyArgentinaStephen Shaw NEGOTIATION
Nicolas IturbideSpainBernardo Dominic UNQUALIFIED
James ButtIndiaAnna Fali NEGOTIATION
Deepesh ChuiSpainOnyama Limba RENEWAL
Arvin AlbaresAustraliaElwin Sharvill UNQUALIFIED
Stacey MacleadBrazilAnna Fali RENEWAL
Alejandro PerinGermanyIoni Bowcher NEW
Arvin AlbaresJapanIoni Bowcher UNQUALIFIED
Morrow RutaFranceElwin Sharvill NEGOTIATION
Julie StensethCanadaAnna Fali NEGOTIATION
Ricardo GauchoArgentinaAnna Fali RENEWAL
Horizontal
NameCountryRepresentativeStatus
Greenwood BologniaArgentinaElwin Sharvill PROPOSAL
Jennifer AmigonSpainIoni Bowcher QUALIFIED
Antonio CaudyJapanXuxue Feng RENEWAL
Munro FerenczFranceAmy Elsner PROPOSAL
Silvio SlusarskiUnited KingdomStephen Shaw NEW
Jefferson SchemmerJapanOnyama Limba NEW
Smith GlickJapanAnna Fali PROPOSAL
James ButtBrazilAnna Fali NEGOTIATION
Aika InouyeRussiaAsiya Javayant QUALIFIED
Ivar PaprockiBrazilStephen Shaw PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Nicolas IturbideUnited Kingdom2026-04-30Dorl, James J Esq UNQUALIFIED36Onyama Limba
1001Darci PoquetteAustralia2026-05-05Rousseaux, Michael Esq PROPOSAL8Onyama Limba
1002Rodrigues CampainGermany2026-05-06Morlong Associates PROPOSAL71Xuxue Feng
1003Jones VocelkaArgentina2026-04-27King, Christopher A Esq NEW98Bernardo Dominic
1004Aditya KuskoAustralia2026-04-24King, Christopher A Esq PROPOSAL24Elwin Sharvill
1005Cody SaylorsGermany2026-05-05Dorl, James J Esq NEW66Amy Elsner
1006Nicolas IturbideRussia2026-05-14Buckley Miller Wright QUALIFIED7Elwin Sharvill
1007Julie StensethJapan2026-05-11Printing Dimensions RENEWAL59Ivan Magalhaes
1008Adams MorascaUnited Kingdom2026-05-07Morlong Associates NEW25Stephen Shaw
1009Tony FollerJapan2026-04-23King, Christopher A Esq NEGOTIATION8Ioni Bowcher
1010Maisha RulapaughCanada2026-05-11Commercial Press RENEWAL47Anna Fali
1011Ashley DoeFrance2026-04-27Truhlar And Truhlar Attys NEW67Amy Elsner
1012James ButtSpain2026-05-12King, Christopher A Esq QUALIFIED64Stephen Shaw
1013Morrow RutaUnited Kingdom2026-05-07Chanay, Jeffrey A Esq NEGOTIATION15Bernardo Dominic
1014Smith GlickRussia2026-04-22King, Christopher A Esq NEW1Asiya Javayant
1015Morrow RutaCanada2026-04-21Buckley Miller Wright UNQUALIFIED26Elwin Sharvill
1016Alejandro PerinJapan2026-05-02Chanay, Jeffrey A Esq NEW97Ioni Bowcher
1017Emily WhobreyBrazil2026-05-07King, Christopher A Esq QUALIFIED39Xuxue Feng
1018Nicolas IturbideAustralia2026-05-07Printing Dimensions RENEWAL86Onyama Limba
1019Leja CaldareraIndia2026-04-18Chemel, James L Cpa QUALIFIED8Asiya Javayant
1020Cody SaylorsBrazil2026-05-03Feiner Bros NEGOTIATION90Amy Elsner
1021Mujtaba NickaItaly2026-05-07Buckley Miller Wright UNQUALIFIED32Xuxue Feng
1022David DarakjyItaly2026-05-09Feiner Bros RENEWAL77Ivan Magalhaes
1023Aditya KuskoBrazil2026-04-25Dorl, James J Esq QUALIFIED76Asiya Javayant
1024Jefferson SchemmerIndia2026-05-12Morlong Associates NEGOTIATION55Anna Fali
1025David DarakjyJapan2026-04-19Feiner Bros UNQUALIFIED9Ivan Magalhaes
1026Mujtaba NickaCanada2026-05-04Rousseaux, Michael Esq NEGOTIATION99Ivan Magalhaes
1027Cody SaylorsGermany2026-04-27Printing Dimensions RENEWAL59Stephen Shaw
1028Kadeem FlosiGermany2026-04-29King, Christopher A Esq NEW61Xuxue Feng
1029Adams MorascaIndia2026-04-18Morlong Associates NEW40Amy Elsner
1030Leon OldroydArgentina2026-05-11Chemel, James L Cpa UNQUALIFIED91Amy Elsner
1031Smith GlickArgentina2026-04-16Commercial Press NEGOTIATION12Bernardo Dominic
1032Tony FollerItaly2026-05-09Buckley Miller Wright RENEWAL25Bernardo Dominic
1033Adams MorascaUnited Kingdom2026-04-27Buckley Miller Wright RENEWAL24Asiya Javayant
1034Clifford RimFrance2026-04-27Morlong Associates NEGOTIATION41Asiya Javayant
1035Ricardo GauchoUnited Kingdom2026-05-05Rangoni Of Florence UNQUALIFIED0Anna Fali
1036Smith GlickRussia2026-04-20Buckley Miller Wright PROPOSAL93Asiya Javayant
1037Izzy GarufiUnited Kingdom2026-05-11Dorl, James J Esq RENEWAL16Stephen Shaw
1038Stacey MacleadItaly2026-04-17Benton, John B Jr RENEWAL99Bernardo Dominic
1039James ButtItaly2026-05-08Commercial Press RENEWAL91Onyama Limba
1040Ashley DoeFrance2026-05-14Chemel, James L Cpa RENEWAL86Bernardo Dominic
1041Clifford RimBrazil2026-04-25Truhlar And Truhlar Attys QUALIFIED26Stephen Shaw
1042Faith GillianArgentina2026-04-30Truhlar And Truhlar Attys NEGOTIATION79Asiya Javayant
1043Salvatore StockhamSpain2026-05-04Benton, John B Jr RENEWAL25Stephen Shaw
1044Clifford RimItaly2026-04-18Chapman, Ross E Esq QUALIFIED69Bernardo Dominic
1045Alejandro PerinAustralia2026-04-16Chanay, Jeffrey A Esq NEW71Bernardo Dominic
1046Julie StensethRussia2026-04-19Chapman, Ross E Esq QUALIFIED58Ioni Bowcher
1047Francesco ShinkoFrance2026-04-26Truhlar And Truhlar Attys RENEWAL70Ioni Bowcher
1048Francesco ShinkoRussia2026-05-14Chemel, James L Cpa RENEWAL30Ivan Magalhaes
1049Salvatore StockhamBrazil2026-04-25Feiner Bros NEW52Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Juan WieserJapanStephen Shaw PROPOSAL
Mayumi KolmetzFranceXuxue Feng NEW
Jeanfrancois VenereUnited KingdomBernardo Dominic UNQUALIFIED
Emily WhobreyIndiaElwin Sharvill QUALIFIED
Aditya KuskoUnited KingdomBernardo Dominic NEW
Rodrigues CampainJapanAnna Fali RENEWAL
Murillo MaletSpainAsiya Javayant RENEWAL
Isabel BowleyItalyOnyama Limba UNQUALIFIED
Salvatore StockhamSpainElwin Sharvill RENEWAL
Julie StensethArgentinaIoni Bowcher NEW
Emily WhobreyIndiaBernardo Dominic QUALIFIED
Smith GlickJapanElwin Sharvill NEW
Francesco ShinkoJapanAsiya Javayant NEGOTIATION
Claire TollnerBrazilBernardo Dominic UNQUALIFIED
Jones VocelkaIndiaIvan Magalhaes NEGOTIATION
Munro FerenczSpainXuxue Feng UNQUALIFIED
David DarakjyFranceAmy Elsner NEGOTIATION
Arvin AlbaresSpainIvan Magalhaes QUALIFIED
Jeanfrancois VenereBrazilIvan Magalhaes QUALIFIED
Izzy GarufiCanadaIvan Magalhaes PROPOSAL
Deepesh ChuiUnited KingdomElwin Sharvill QUALIFIED
Silvio SlusarskiUnited KingdomAmy Elsner NEGOTIATION
Mujtaba NickaRussiaAmy Elsner NEW
Claire TollnerFranceStephen Shaw NEGOTIATION
Ashley DoeBrazilAsiya Javayant NEW
Ivar PaprockiFranceAmy Elsner UNQUALIFIED
Salvatore StockhamBrazilXuxue Feng QUALIFIED
Salvatore StockhamGermanyAnna Fali NEGOTIATION
Jeanfrancois VenereArgentinaAmy Elsner NEW
Faith GillianFranceIoni Bowcher RENEWAL
Aruna FigeroaJapanOnyama Limba QUALIFIED
Adams MorascaFranceElwin Sharvill UNQUALIFIED
Stacey MacleadFranceStephen Shaw NEGOTIATION
Silvio SlusarskiAustraliaIoni Bowcher NEW
Juan WieserCanadaIvan Magalhaes UNQUALIFIED
Arvin AlbaresJapanXuxue Feng PROPOSAL
Emily WhobreyItalyStephen Shaw NEGOTIATION
Leon OldroydCanadaIoni Bowcher NEW
Murillo MaletArgentinaXuxue Feng RENEWAL
Silvio SlusarskiArgentinaBernardo Dominic NEGOTIATION
Leon OldroydFranceXuxue Feng NEW
Isabel BowleyUnited KingdomIoni Bowcher UNQUALIFIED
Adams MorascaSpainBernardo Dominic UNQUALIFIED
Arvin AlbaresBrazilOnyama Limba NEGOTIATION
Leja CaldareraGermanyIoni Bowcher NEW
Jeanfrancois VenereBrazilXuxue Feng PROPOSAL
Darci PoquetteItalyIoni Bowcher PROPOSAL
Maisha RulapaughAustraliaElwin Sharvill NEW
Johnson SergiBrazilAnna Fali RENEWAL
Octavia MaletJapanAmy Elsner PROPOSAL
Frozen Columns
Name
Cody Saylors
Jeanfrancois Venere
Kaitlin Ostrosky
Mujtaba Nicka
Jones Vocelka
Kaitlin Ostrosky
Kadeem Flosi
David Darakjy
Chavez Briddick
Wickens Nestle
Sinclair Waycott
Johnson Sergi
Maisha Rulapaugh
Aika Inouye
Juan Wieser
Ivar Paprocki
Johnson Sergi
Leja Caldarera
Chavez Briddick
Costa Dilliard
Francesco Shinko
Ricardo Gaucho
Alejandro Perin
Francesco Shinko
Emily Whobrey
Morrow Ruta
Jones Vocelka
Juan Wieser
Deepesh Chui
Julie Stenseth
Emily Whobrey
Murillo Malet
Chavez Briddick
Jennifer Amigon
Jennifer Amigon
Smith Glick
Costa Dilliard
Sinclair Waycott
Kadeem Flosi
Jeanfrancois Venere
Cody Saylors
Smith Glick
Rodrigues Campain
Cody Saylors
Aika Inouye
Munro Ferencz
Jeanfrancois Venere
Tony Foller
Morrow Ruta
Wickens Nestle
IdCountryDate
1000Argentina2026-05-13
1001Italy2026-05-15
1002France2026-05-14
1003Russia2026-04-30
1004Australia2026-04-24
1005France2026-04-17
1006Spain2026-04-25
1007India2026-04-24
1008France2026-05-05
1009Argentina2026-05-10
1010Japan2026-05-09
1011Australia2026-05-14
1012Spain2026-04-22
1013United Kingdom2026-05-01
1014Russia2026-04-29
1015India2026-05-11
1016Germany2026-05-05
1017India2026-04-22
1018India2026-04-27
1019Germany2026-05-12
1020Italy2026-04-16
1021Brazil2026-05-05
1022Italy2026-05-13
1023Spain2026-05-11
1024Australia2026-04-20
1025France2026-04-16
1026Argentina2026-05-02
1027United Kingdom2026-04-16
1028France2026-04-26
1029Australia2026-05-13
1030France2026-04-18
1031Spain2026-05-13
1032Italy2026-04-27
1033United Kingdom2026-05-14
1034Japan2026-05-15
1035Brazil2026-05-15
1036Japan2026-04-18
1037Argentina2026-04-23
1038Spain2026-05-05
1039Italy2026-04-21
1040Argentina2026-05-08
1041Argentina2026-04-25
1042Germany2026-04-16
1043Argentina2026-04-21
1044Australia2026-05-02
1045France2026-05-09
1046France2026-05-03
1047Spain2026-05-15
1048United Kingdom2026-05-10
1049India2026-04-22

On-Demand Data

NameIdCountryDate
Leon Oldroyd1000Australia2026-04-27
Darci Poquette1001France2026-04-29
Ivar Paprocki1002Australia2026-04-30
Clifford Rim1003United Kingdom2026-04-19
Octavia Malet1004India2026-05-02
Alejandro Perin1005United Kingdom2026-05-13
Maria Marrier1006Spain2026-04-20
Smith Glick1007Spain2026-05-10
Johnson Sergi1008Spain2026-05-12
Juan Wieser1009Russia2026-05-06
Octavia Malet1010Japan2026-05-12
Kadeem Flosi1011Germany2026-05-07
Misaki Royster1012Argentina2026-05-10
Ivar Paprocki1013Brazil2026-04-30
David Darakjy1014Russia2026-05-14
Murillo Malet1015Canada2026-05-15
Jennifer Amigon1016Brazil2026-04-20
Murillo Malet1017Argentina2026-04-21
Johnson Sergi1018Canada2026-05-13
Mujtaba Nicka1019India2026-04-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ashley DoeSpainOnyama Limba RENEWAL
Antonio CaudyUnited KingdomAsiya Javayant NEGOTIATION
James ButtBrazilAmy Elsner NEGOTIATION
Kadeem FlosiIndiaBernardo Dominic QUALIFIED
Greenwood BologniaFranceBernardo Dominic QUALIFIED
Tony FollerRussiaAsiya Javayant PROPOSAL
Isabel BowleyJapanXuxue Feng UNQUALIFIED
Alejandro PerinBrazilBernardo Dominic UNQUALIFIED
Izzy GarufiCanadaIvan Magalhaes QUALIFIED
Smith GlickAustraliaOnyama Limba UNQUALIFIED
Antonio CaudyArgentinaIoni Bowcher QUALIFIED
Izzy GarufiSpainBernardo Dominic UNQUALIFIED
Darci PoquetteGermanyAmy Elsner PROPOSAL
Morrow RutaArgentinaBernardo Dominic QUALIFIED
Emily WhobreyItalyAmy Elsner NEGOTIATION
Ricardo GauchoAustraliaIvan Magalhaes RENEWAL
Salvatore StockhamSpainAsiya Javayant PROPOSAL
Kadeem FlosiRussiaStephen Shaw UNQUALIFIED
Claire TollnerBrazilAmy Elsner UNQUALIFIED
Francesco ShinkoItalyAmy Elsner PROPOSAL
Aruna FigeroaGermanyBernardo Dominic NEW
David DarakjyRussiaAsiya Javayant RENEWAL
Mayumi KolmetzJapanAnna Fali UNQUALIFIED
Silvio SlusarskiBrazilIvan Magalhaes NEGOTIATION
Clifford RimJapanOnyama Limba UNQUALIFIED
Silvio SlusarskiFranceAsiya Javayant UNQUALIFIED
James ButtAustraliaAnna Fali PROPOSAL
Clifford RimAustraliaOnyama Limba NEGOTIATION
Sinclair WaycottBrazilAnna Fali NEW
Francesco ShinkoCanadaIvan Magalhaes QUALIFIED
Jefferson SchemmerIndiaIvan Magalhaes PROPOSAL
Izzy GarufiCanadaStephen Shaw NEW
Johnson SergiBrazilAnna Fali NEGOTIATION
Wickens NestleIndiaAnna Fali NEGOTIATION
Isabel BowleyGermanyStephen Shaw NEW
Aruna FigeroaAustraliaXuxue Feng RENEWAL
Juan WieserCanadaBernardo Dominic PROPOSAL
Maisha RulapaughBrazilOnyama Limba NEGOTIATION
Darci PoquetteArgentinaXuxue Feng QUALIFIED
Misaki RoysterRussiaIvan Magalhaes UNQUALIFIED

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