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
Izzy GarufiAustraliaOnyama Limba QUALIFIED
Mayumi KolmetzAustraliaElwin Sharvill NEW
Julie StensethBrazilBernardo Dominic QUALIFIED
Alejandro PerinArgentinaIvan Magalhaes QUALIFIED
Munro FerenczGermanyIoni Bowcher RENEWAL
Misaki RoysterIndiaIvan Magalhaes QUALIFIED
Sinclair WaycottFranceIvan Magalhaes PROPOSAL
Julie StensethIndiaBernardo Dominic NEGOTIATION
Aditya KuskoArgentinaBernardo Dominic NEW
Isabel BowleyArgentinaBernardo Dominic UNQUALIFIED
Nicolas IturbideUnited KingdomBernardo Dominic RENEWAL
Alejandro PerinGermanyXuxue Feng QUALIFIED
Adams MorascaFranceAnna Fali RENEWAL
Francesco ShinkoAustraliaBernardo Dominic QUALIFIED
Jones VocelkaRussiaOnyama Limba QUALIFIED
Julie StensethItalyIoni Bowcher NEGOTIATION
Maria MarrierGermanyXuxue Feng RENEWAL
David DarakjyUnited KingdomXuxue Feng RENEWAL
Aika InouyeUnited KingdomAnna Fali NEW
Misaki RoysterAustraliaIvan Magalhaes UNQUALIFIED
Cody SaylorsCanadaAnna Fali NEW
Clifford RimArgentinaElwin Sharvill QUALIFIED
David DarakjyRussiaXuxue Feng PROPOSAL
Jones VocelkaUnited KingdomIoni Bowcher RENEWAL
Greenwood BologniaIndiaElwin Sharvill QUALIFIED
Jefferson SchemmerAustraliaIvan Magalhaes PROPOSAL
Greenwood BologniaArgentinaAnna Fali NEW
Tony FollerItalyAmy Elsner PROPOSAL
Mayumi KolmetzCanadaStephen Shaw PROPOSAL
Darci PoquetteGermanyAmy Elsner PROPOSAL
James ButtGermanyStephen Shaw NEW
Munro FerenczArgentinaAnna Fali UNQUALIFIED
Stacey MacleadItalyElwin Sharvill RENEWAL
Smith GlickFranceOnyama Limba NEGOTIATION
Jennifer AmigonJapanIvan Magalhaes NEW
Clifford RimAustraliaAmy Elsner NEGOTIATION
Wickens NestleJapanAnna Fali NEGOTIATION
Leja CaldareraAustraliaAnna Fali NEGOTIATION
Salvatore StockhamAustraliaElwin Sharvill NEW
Kaitlin OstroskyJapanAnna Fali PROPOSAL
Emily WhobreyArgentinaOnyama Limba RENEWAL
Ricardo GauchoItalyAnna Fali RENEWAL
Aruna FigeroaIndiaIoni Bowcher NEW
Kaitlin OstroskyCanadaStephen Shaw NEGOTIATION
Izzy GarufiUnited KingdomStephen Shaw RENEWAL
Adams MorascaCanadaBernardo Dominic RENEWAL
Tony FollerBrazilBernardo Dominic NEW
Salvatore StockhamSpainOnyama Limba UNQUALIFIED
Adams MorascaArgentinaXuxue Feng QUALIFIED
Murillo MaletAustraliaXuxue Feng UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Smith GlickArgentinaIoni Bowcher NEW
Smith GlickItalyBernardo Dominic UNQUALIFIED
Julie StensethFranceAnna Fali QUALIFIED
Francesco ShinkoCanadaAnna Fali QUALIFIED
Mujtaba NickaGermanyOnyama Limba PROPOSAL
Maisha RulapaughGermanyElwin Sharvill PROPOSAL
Claire TollnerBrazilAsiya Javayant QUALIFIED
Ivar PaprockiSpainXuxue Feng UNQUALIFIED
Maisha RulapaughIndiaAsiya Javayant RENEWAL
Juan WieserAustraliaIvan Magalhaes QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jennifer AmigonJapan2026-05-25Chemel, James L Cpa RENEWAL44Elwin Sharvill
1001Antonio CaudyRussia2026-05-24Chanay, Jeffrey A Esq RENEWAL29Ioni Bowcher
1002Juan WieserGermany2026-06-02Morlong Associates NEW40Asiya Javayant
1003Ivar PaprockiRussia2026-05-31Chapman, Ross E Esq UNQUALIFIED47Amy Elsner
1004Darci PoquetteRussia2026-06-08Benton, John B Jr UNQUALIFIED91Stephen Shaw
1005Johnson SergiBrazil2026-05-27Morlong Associates NEGOTIATION90Onyama Limba
1006Sinclair WaycottJapan2026-05-19Chanay, Jeffrey A Esq PROPOSAL20Amy Elsner
1007Clifford RimSpain2026-06-14King, Christopher A Esq NEW2Asiya Javayant
1008Greenwood BologniaJapan2026-06-06Truhlar And Truhlar Attys NEW36Anna Fali
1009Aruna FigeroaFrance2026-05-28Feltz Printing Service NEGOTIATION90Amy Elsner
1010Aditya KuskoCanada2026-06-13Morlong Associates QUALIFIED34Ivan Magalhaes
1011Cody SaylorsRussia2026-05-23Dorl, James J Esq RENEWAL47Asiya Javayant
1012Silvio SlusarskiRussia2026-05-19Truhlar And Truhlar Attys PROPOSAL70Xuxue Feng
1013Salvatore StockhamAustralia2026-05-17Dorl, James J Esq RENEWAL92Bernardo Dominic
1014Izzy GarufiAustralia2026-05-30Feiner Bros UNQUALIFIED53Bernardo Dominic
1015Alejandro PerinFrance2026-06-06Feiner Bros PROPOSAL17Ivan Magalhaes
1016Tony FollerGermany2026-06-02Commercial Press QUALIFIED49Asiya Javayant
1017Juan WieserCanada2026-06-05Feiner Bros RENEWAL69Ivan Magalhaes
1018Wickens NestleItaly2026-06-14Chanay, Jeffrey A Esq UNQUALIFIED58Xuxue Feng
1019Aika InouyeUnited Kingdom2026-05-30Chanay, Jeffrey A Esq PROPOSAL9Stephen Shaw
1020Mujtaba NickaJapan2026-06-01Truhlar And Truhlar Attys NEGOTIATION38Onyama Limba
1021Mayumi KolmetzAustralia2026-05-28Chapman, Ross E Esq UNQUALIFIED6Ioni Bowcher
1022Kadeem FlosiIndia2026-05-19Buckley Miller Wright PROPOSAL21Bernardo Dominic
1023Smith GlickSpain2026-06-08Morlong Associates RENEWAL87Onyama Limba
1024Silvio SlusarskiCanada2026-05-30Printing Dimensions UNQUALIFIED30Asiya Javayant
1025Francesco ShinkoUnited Kingdom2026-06-13Morlong Associates NEGOTIATION22Anna Fali
1026Wickens NestleJapan2026-05-16Benton, John B Jr RENEWAL6Ioni Bowcher
1027David DarakjyBrazil2026-06-13Buckley Miller Wright PROPOSAL54Stephen Shaw
1028Ricardo GauchoAustralia2026-06-06Feiner Bros NEW5Asiya Javayant
1029Julie StensethSpain2026-05-17Benton, John B Jr RENEWAL37Ioni Bowcher
1030Maria MarrierIndia2026-05-24Chanay, Jeffrey A Esq PROPOSAL54Xuxue Feng
1031Tony FollerGermany2026-05-18Chapman, Ross E Esq NEGOTIATION35Asiya Javayant
1032Octavia MaletSpain2026-06-10Benton, John B Jr RENEWAL13Ioni Bowcher
1033Tony FollerUnited Kingdom2026-06-07Dorl, James J Esq NEW0Amy Elsner
1034Mayumi KolmetzIndia2026-06-03Feiner Bros NEW39Asiya Javayant
1035Ivar PaprockiIndia2026-06-03Dorl, James J Esq NEGOTIATION9Asiya Javayant
1036Arvin AlbaresRussia2026-05-18Rangoni Of Florence PROPOSAL26Asiya Javayant
1037Faith GillianAustralia2026-06-12Truhlar And Truhlar Attys RENEWAL52Amy Elsner
1038Antonio CaudyAustralia2026-05-20Printing Dimensions RENEWAL73Xuxue Feng
1039Juan WieserRussia2026-05-28Feltz Printing Service NEW27Asiya Javayant
1040Julie StensethRussia2026-06-14Truhlar And Truhlar Attys UNQUALIFIED82Ivan Magalhaes
1041Darci PoquetteUnited Kingdom2026-05-18Dorl, James J Esq NEGOTIATION20Xuxue Feng
1042Munro FerenczUnited Kingdom2026-05-23Feltz Printing Service NEW98Xuxue Feng
1043Mujtaba NickaUnited Kingdom2026-05-30Rousseaux, Michael Esq NEW99Stephen Shaw
1044Mujtaba NickaIndia2026-06-14Morlong Associates RENEWAL49Anna Fali
1045Chavez BriddickAustralia2026-05-24Feltz Printing Service NEGOTIATION92Amy Elsner
1046Morrow RutaArgentina2026-05-22Chanay, Jeffrey A Esq PROPOSAL77Asiya Javayant
1047Aruna FigeroaFrance2026-05-21Chemel, James L Cpa UNQUALIFIED6Bernardo Dominic
1048Octavia MaletGermany2026-05-29King, Christopher A Esq RENEWAL6Stephen Shaw
1049Deepesh ChuiUnited Kingdom2026-06-06Rousseaux, Michael Esq UNQUALIFIED59Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Deepesh ChuiItalyAmy Elsner RENEWAL
Emily WhobreyJapanOnyama Limba NEW
Deepesh ChuiSpainStephen Shaw UNQUALIFIED
Adams MorascaItalyAsiya Javayant RENEWAL
Kaitlin OstroskyFranceIvan Magalhaes NEGOTIATION
Octavia MaletGermanyIoni Bowcher UNQUALIFIED
Antonio CaudyIndiaAsiya Javayant UNQUALIFIED
Nicolas IturbideIndiaXuxue Feng NEGOTIATION
Munro FerenczFranceElwin Sharvill QUALIFIED
Aika InouyeCanadaOnyama Limba RENEWAL
Francesco ShinkoGermanyAsiya Javayant NEW
Nicolas IturbideAustraliaAnna Fali UNQUALIFIED
Rodrigues CampainCanadaAnna Fali UNQUALIFIED
Clifford RimBrazilIoni Bowcher RENEWAL
Isabel BowleyRussiaAnna Fali UNQUALIFIED
Darci PoquetteCanadaAnna Fali UNQUALIFIED
Ashley DoeRussiaAsiya Javayant NEW
Aika InouyeGermanyBernardo Dominic UNQUALIFIED
Kaitlin OstroskyItalyAsiya Javayant UNQUALIFIED
Deepesh ChuiJapanAmy Elsner PROPOSAL
Antonio CaudyRussiaAmy Elsner NEW
Emily WhobreyRussiaOnyama Limba NEW
Ricardo GauchoUnited KingdomXuxue Feng UNQUALIFIED
Salvatore StockhamJapanOnyama Limba PROPOSAL
Deepesh ChuiUnited KingdomAnna Fali QUALIFIED
Claire TollnerUnited KingdomAnna Fali PROPOSAL
Tony FollerGermanyXuxue Feng QUALIFIED
Mujtaba NickaArgentinaIvan Magalhaes QUALIFIED
Costa DilliardIndiaElwin Sharvill PROPOSAL
Jennifer AmigonArgentinaBernardo Dominic NEW
Silvio SlusarskiUnited KingdomBernardo Dominic PROPOSAL
Cody SaylorsFranceAsiya Javayant NEGOTIATION
Mayumi KolmetzFranceAnna Fali NEGOTIATION
Aruna FigeroaGermanyIvan Magalhaes NEW
Claire TollnerCanadaAsiya Javayant QUALIFIED
Izzy GarufiArgentinaElwin Sharvill PROPOSAL
Octavia MaletAustraliaElwin Sharvill QUALIFIED
Smith GlickUnited KingdomStephen Shaw NEW
Ricardo GauchoArgentinaAnna Fali NEW
Clifford RimRussiaXuxue Feng NEGOTIATION
Leja CaldareraJapanAsiya Javayant NEW
Juan WieserRussiaBernardo Dominic UNQUALIFIED
Faith GillianCanadaAnna Fali UNQUALIFIED
Leon OldroydGermanyBernardo Dominic NEGOTIATION
Jeanfrancois VenereRussiaXuxue Feng PROPOSAL
Jeanfrancois VenereFranceElwin Sharvill NEW
Ricardo GauchoSpainAnna Fali RENEWAL
Isabel BowleyArgentinaXuxue Feng NEW
James ButtIndiaElwin Sharvill UNQUALIFIED
Antonio CaudyItalyIvan Magalhaes NEW
Frozen Columns
Name
Adams Morasca
Maisha Rulapaugh
Kaitlin Ostrosky
Aika Inouye
Antonio Caudy
Antonio Caudy
Kaitlin Ostrosky
Munro Ferencz
Arvin Albares
Isabel Bowley
Wickens Nestle
Arvin Albares
Izzy Garufi
Kaitlin Ostrosky
Misaki Royster
Tony Foller
Ashley Doe
Deepesh Chui
Jeanfrancois Venere
Cody Saylors
Stacey Maclead
Juan Wieser
Smith Glick
Adams Morasca
Salvatore Stockham
Aditya Kusko
Jennifer Amigon
Jennifer Amigon
Julie Stenseth
Munro Ferencz
Wickens Nestle
Faith Gillian
Antonio Caudy
Wickens Nestle
Juan Wieser
Jefferson Schemmer
Costa Dilliard
Kadeem Flosi
Greenwood Bolognia
Clifford Rim
Aika Inouye
Alejandro Perin
Claire Tollner
Aditya Kusko
Rodrigues Campain
Maisha Rulapaugh
Morrow Ruta
Johnson Sergi
Ivar Paprocki
Chavez Briddick
IdCountryDate
1000France2026-06-13
1001Australia2026-06-06
1002Russia2026-06-11
1003Japan2026-05-20
1004Spain2026-05-27
1005Italy2026-06-14
1006Italy2026-06-10
1007Germany2026-05-31
1008Italy2026-05-16
1009United Kingdom2026-05-31
1010Australia2026-06-04
1011Brazil2026-06-07
1012United Kingdom2026-06-05
1013Italy2026-05-19
1014India2026-05-26
1015Italy2026-06-06
1016Canada2026-06-14
1017India2026-05-16
1018Brazil2026-05-27
1019Japan2026-06-11
1020Italy2026-06-10
1021France2026-06-14
1022Canada2026-06-06
1023Russia2026-05-28
1024Germany2026-06-02
1025Japan2026-06-10
1026Germany2026-06-08
1027Japan2026-05-26
1028United Kingdom2026-06-13
1029Russia2026-05-17
1030Japan2026-05-20
1031Russia2026-06-10
1032France2026-05-31
1033Argentina2026-05-29
1034Argentina2026-06-05
1035Brazil2026-05-17
1036Italy2026-05-27
1037India2026-06-11
1038Brazil2026-05-30
1039Russia2026-05-30
1040Russia2026-05-23
1041Italy2026-06-03
1042Italy2026-05-19
1043Canada2026-05-30
1044Spain2026-06-13
1045United Kingdom2026-06-13
1046United Kingdom2026-05-19
1047India2026-05-30
1048Brazil2026-06-13
1049United Kingdom2026-05-26

On-Demand Data

NameIdCountryDate
Darci Poquette1000Argentina2026-06-14
Ricardo Gaucho1001Italy2026-06-11
Clifford Rim1002Australia2026-06-05
Julie Stenseth1003Brazil2026-05-30
Munro Ferencz1004Argentina2026-06-12
Arvin Albares1005Australia2026-06-07
Leon Oldroyd1006United Kingdom2026-06-04
Emily Whobrey1007Brazil2026-06-04
Ashley Doe1008Russia2026-06-04
Tony Foller1009Spain2026-05-27
Isabel Bowley1010Canada2026-06-11
Leon Oldroyd1011Spain2026-06-11
Izzy Garufi1012Spain2026-05-19
Johnson Sergi1013Japan2026-06-14
Juan Wieser1014France2026-05-27
Jeanfrancois Venere1015Japan2026-05-17
Misaki Royster1016Australia2026-05-18
Murillo Malet1017India2026-06-06
Kaitlin Ostrosky1018France2026-05-28
Emily Whobrey1019Argentina2026-05-21
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Alejandro PerinRussiaAnna Fali UNQUALIFIED
Francesco ShinkoAustraliaXuxue Feng NEW
Greenwood BologniaRussiaIoni Bowcher RENEWAL
Kadeem FlosiGermanyOnyama Limba NEW
Isabel BowleyAustraliaAsiya Javayant NEW
Murillo MaletGermanyXuxue Feng NEW
Leon OldroydJapanXuxue Feng QUALIFIED
Alejandro PerinCanadaIvan Magalhaes RENEWAL
Aditya KuskoSpainXuxue Feng QUALIFIED
Sinclair WaycottSpainAnna Fali QUALIFIED
Murillo MaletRussiaElwin Sharvill PROPOSAL
Clifford RimUnited KingdomAsiya Javayant UNQUALIFIED
Clifford RimRussiaAnna Fali RENEWAL
Munro FerenczBrazilElwin Sharvill UNQUALIFIED
James ButtArgentinaStephen Shaw UNQUALIFIED
David DarakjyArgentinaIoni Bowcher NEW
Leja CaldareraIndiaXuxue Feng RENEWAL
Rodrigues CampainJapanIvan Magalhaes NEW
David DarakjyRussiaXuxue Feng QUALIFIED
Cody SaylorsBrazilAmy Elsner RENEWAL
Aditya KuskoIndiaStephen Shaw NEGOTIATION
Clifford RimSpainBernardo Dominic NEW
Tony FollerAustraliaAsiya Javayant RENEWAL
Izzy GarufiFranceIoni Bowcher NEGOTIATION
Darci PoquetteIndiaElwin Sharvill NEGOTIATION
Isabel BowleyGermanyIvan Magalhaes PROPOSAL
Nicolas IturbideBrazilAnna Fali NEW
Cody SaylorsCanadaXuxue Feng UNQUALIFIED
Faith GillianJapanBernardo Dominic QUALIFIED
Jennifer AmigonGermanyStephen Shaw NEGOTIATION
Jefferson SchemmerArgentinaAsiya Javayant QUALIFIED
Jones VocelkaItalyAmy Elsner RENEWAL
Aditya KuskoJapanOnyama Limba UNQUALIFIED
Julie StensethFranceStephen Shaw QUALIFIED
Clifford RimJapanElwin Sharvill PROPOSAL
Wickens NestleIndiaIoni Bowcher NEGOTIATION
Rodrigues CampainFranceAnna Fali NEGOTIATION
Faith GillianCanadaAsiya Javayant UNQUALIFIED
Alejandro PerinBrazilOnyama Limba NEW
Izzy GarufiJapanXuxue Feng 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>