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
Morrow RutaSpainXuxue Feng NEGOTIATION
Julie StensethBrazilAnna Fali NEW
Sinclair WaycottFranceBernardo Dominic NEGOTIATION
Nicolas IturbideGermanyElwin Sharvill PROPOSAL
Faith GillianBrazilAsiya Javayant RENEWAL
Kadeem FlosiJapanXuxue Feng PROPOSAL
Ivar PaprockiSpainXuxue Feng NEW
Jefferson SchemmerSpainOnyama Limba PROPOSAL
Aditya KuskoUnited KingdomAmy Elsner NEW
Jones VocelkaSpainElwin Sharvill PROPOSAL
Arvin AlbaresJapanAnna Fali PROPOSAL
Ashley DoeBrazilIvan Magalhaes UNQUALIFIED
Chavez BriddickIndiaAmy Elsner UNQUALIFIED
Ricardo GauchoSpainAsiya Javayant NEW
Octavia MaletSpainAmy Elsner PROPOSAL
Aditya KuskoCanadaStephen Shaw NEW
Jennifer AmigonUnited KingdomBernardo Dominic QUALIFIED
Johnson SergiIndiaIvan Magalhaes RENEWAL
Chavez BriddickSpainBernardo Dominic PROPOSAL
Aruna FigeroaUnited KingdomIvan Magalhaes NEGOTIATION
Leja CaldareraSpainIvan Magalhaes PROPOSAL
Aika InouyeUnited KingdomIvan Magalhaes QUALIFIED
Cody SaylorsGermanyXuxue Feng PROPOSAL
Morrow RutaSpainAnna Fali PROPOSAL
Juan WieserArgentinaAsiya Javayant NEGOTIATION
Chavez BriddickBrazilIoni Bowcher QUALIFIED
Morrow RutaSpainXuxue Feng RENEWAL
Sinclair WaycottCanadaAnna Fali NEW
Alejandro PerinBrazilOnyama Limba UNQUALIFIED
Adams MorascaFranceAmy Elsner NEGOTIATION
Kadeem FlosiItalyIvan Magalhaes NEW
Jefferson SchemmerIndiaOnyama Limba RENEWAL
Claire TollnerIndiaStephen Shaw PROPOSAL
Kaitlin OstroskyBrazilAsiya Javayant QUALIFIED
Smith GlickJapanBernardo Dominic QUALIFIED
Misaki RoysterAustraliaAmy Elsner NEW
James ButtIndiaIvan Magalhaes NEGOTIATION
Silvio SlusarskiUnited KingdomStephen Shaw PROPOSAL
Stacey MacleadUnited KingdomElwin Sharvill QUALIFIED
Kaitlin OstroskyCanadaBernardo Dominic NEGOTIATION
David DarakjyFranceElwin Sharvill QUALIFIED
Clifford RimJapanXuxue Feng NEGOTIATION
Jefferson SchemmerGermanyElwin Sharvill QUALIFIED
Nicolas IturbideJapanBernardo Dominic RENEWAL
Rodrigues CampainItalyIvan Magalhaes NEW
Isabel BowleyGermanyElwin Sharvill PROPOSAL
Faith GillianGermanyIvan Magalhaes RENEWAL
Julie StensethIndiaXuxue Feng NEGOTIATION
Munro FerenczRussiaIoni Bowcher NEGOTIATION
Mayumi KolmetzGermanyElwin Sharvill PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Antonio CaudyRussiaAsiya Javayant NEGOTIATION
Kadeem FlosiAustraliaOnyama Limba NEW
David DarakjySpainStephen Shaw NEGOTIATION
Faith GillianBrazilAsiya Javayant NEGOTIATION
Emily WhobreyJapanBernardo Dominic QUALIFIED
Claire TollnerArgentinaOnyama Limba NEGOTIATION
Octavia MaletAustraliaIvan Magalhaes PROPOSAL
Johnson SergiSpainIoni Bowcher NEW
Mayumi KolmetzSpainOnyama Limba PROPOSAL
Leon OldroydBrazilStephen Shaw PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Antonio CaudyFrance2026-04-01King, Christopher A Esq NEGOTIATION11Elwin Sharvill
1001Sinclair WaycottGermany2026-04-21Commercial Press UNQUALIFIED32Asiya Javayant
1002Arvin AlbaresIndia2026-04-20Chanay, Jeffrey A Esq QUALIFIED50Elwin Sharvill
1003Arvin AlbaresSpain2026-04-17Truhlar And Truhlar Attys PROPOSAL3Stephen Shaw
1004Jones VocelkaIndia2026-04-17Printing Dimensions NEGOTIATION65Xuxue Feng
1005Aika InouyeArgentina2026-04-06Commercial Press RENEWAL42Ivan Magalhaes
1006Rodrigues CampainAustralia2026-04-10Chapman, Ross E Esq NEW12Anna Fali
1007Kadeem FlosiItaly2026-04-04Buckley Miller Wright NEW7Onyama Limba
1008Ivar PaprockiGermany2026-04-01Dorl, James J Esq PROPOSAL7Amy Elsner
1009Juan WieserGermany2026-04-23Chapman, Ross E Esq RENEWAL4Asiya Javayant
1010Sinclair WaycottUnited Kingdom2026-04-06Chemel, James L Cpa NEGOTIATION30Onyama Limba
1011Mayumi KolmetzBrazil2026-03-28Rangoni Of Florence RENEWAL2Elwin Sharvill
1012Julie StensethGermany2026-03-29King, Christopher A Esq QUALIFIED88Xuxue Feng
1013Kadeem FlosiBrazil2026-04-16Chapman, Ross E Esq PROPOSAL6Xuxue Feng
1014Juan WieserSpain2026-03-29King, Christopher A Esq NEGOTIATION33Stephen Shaw
1015Arvin AlbaresJapan2026-04-05Morlong Associates UNQUALIFIED76Amy Elsner
1016Murillo MaletAustralia2026-04-15Morlong Associates PROPOSAL78Stephen Shaw
1017Murillo MaletBrazil2026-04-17Morlong Associates UNQUALIFIED55Amy Elsner
1018Jennifer AmigonFrance2026-04-01Feiner Bros UNQUALIFIED97Ioni Bowcher
1019Ricardo GauchoRussia2026-04-05Rangoni Of Florence PROPOSAL43Amy Elsner
1020Silvio SlusarskiUnited Kingdom2026-04-04Chemel, James L Cpa RENEWAL45Ivan Magalhaes
1021David DarakjyAustralia2026-04-09Rousseaux, Michael Esq RENEWAL42Ivan Magalhaes
1022Morrow RutaRussia2026-03-30Feiner Bros RENEWAL21Xuxue Feng
1023Octavia MaletSpain2026-04-08King, Christopher A Esq RENEWAL91Onyama Limba
1024Mujtaba NickaItaly2026-04-20King, Christopher A Esq UNQUALIFIED9Xuxue Feng
1025Claire TollnerCanada2026-04-23Commercial Press RENEWAL93Amy Elsner
1026Julie StensethJapan2026-04-08Morlong Associates NEW89Anna Fali
1027Claire TollnerUnited Kingdom2026-04-05King, Christopher A Esq NEW91Anna Fali
1028Adams MorascaGermany2026-04-08Buckley Miller Wright NEGOTIATION6Bernardo Dominic
1029Deepesh ChuiAustralia2026-04-03Rangoni Of Florence PROPOSAL1Amy Elsner
1030Cody SaylorsArgentina2026-04-05Chemel, James L Cpa UNQUALIFIED7Amy Elsner
1031Maisha RulapaughUnited Kingdom2026-04-15Commercial Press QUALIFIED10Anna Fali
1032Jeanfrancois VenereGermany2026-03-28Printing Dimensions RENEWAL95Asiya Javayant
1033Mujtaba NickaRussia2026-04-10Buckley Miller Wright NEGOTIATION12Stephen Shaw
1034Jefferson SchemmerItaly2026-04-23Truhlar And Truhlar Attys QUALIFIED98Asiya Javayant
1035Silvio SlusarskiBrazil2026-04-13Feiner Bros NEGOTIATION35Bernardo Dominic
1036James ButtArgentina2026-04-17Benton, John B Jr NEW8Onyama Limba
1037James ButtGermany2026-03-29Benton, John B Jr PROPOSAL33Bernardo Dominic
1038Munro FerenczRussia2026-04-13Morlong Associates QUALIFIED72Onyama Limba
1039Izzy GarufiAustralia2026-03-27Chemel, James L Cpa QUALIFIED23Ivan Magalhaes
1040Mujtaba NickaArgentina2026-04-09Rousseaux, Michael Esq NEGOTIATION58Bernardo Dominic
1041Sinclair WaycottFrance2026-04-07Rangoni Of Florence NEW30Ioni Bowcher
1042Jennifer AmigonUnited Kingdom2026-04-16Rangoni Of Florence UNQUALIFIED51Ioni Bowcher
1043Emily WhobreyArgentina2026-03-27Commercial Press PROPOSAL24Ivan Magalhaes
1044Leja CaldareraSpain2026-04-15Commercial Press QUALIFIED59Elwin Sharvill
1045Aruna FigeroaJapan2026-04-10Chanay, Jeffrey A Esq NEW64Asiya Javayant
1046Julie StensethBrazil2026-04-24Morlong Associates PROPOSAL94Ioni Bowcher
1047Greenwood BologniaAustralia2026-04-06Feltz Printing Service PROPOSAL61Stephen Shaw
1048Rodrigues CampainFrance2026-03-27Chapman, Ross E Esq UNQUALIFIED99Anna Fali
1049Costa DilliardUnited Kingdom2026-04-11Dorl, James J Esq RENEWAL47Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Maisha RulapaughJapanIoni Bowcher QUALIFIED
Kaitlin OstroskyGermanyIoni Bowcher NEGOTIATION
Antonio CaudyAustraliaAnna Fali NEW
Munro FerenczRussiaIoni Bowcher RENEWAL
Alejandro PerinGermanyStephen Shaw QUALIFIED
Kadeem FlosiIndiaStephen Shaw RENEWAL
Silvio SlusarskiBrazilOnyama Limba UNQUALIFIED
Alejandro PerinItalyXuxue Feng QUALIFIED
Alejandro PerinSpainAnna Fali UNQUALIFIED
Costa DilliardRussiaXuxue Feng PROPOSAL
Mayumi KolmetzGermanyAsiya Javayant RENEWAL
Cody SaylorsBrazilIvan Magalhaes PROPOSAL
Aditya KuskoAustraliaBernardo Dominic UNQUALIFIED
Jeanfrancois VenereAustraliaElwin Sharvill RENEWAL
Francesco ShinkoItalyAmy Elsner PROPOSAL
Deepesh ChuiArgentinaIvan Magalhaes NEW
Costa DilliardItalyAsiya Javayant UNQUALIFIED
Munro FerenczJapanStephen Shaw RENEWAL
Maisha RulapaughCanadaStephen Shaw QUALIFIED
Salvatore StockhamCanadaIvan Magalhaes PROPOSAL
James ButtCanadaAsiya Javayant QUALIFIED
Costa DilliardUnited KingdomStephen Shaw NEW
Alejandro PerinIndiaAnna Fali NEW
Rodrigues CampainArgentinaBernardo Dominic PROPOSAL
Deepesh ChuiUnited KingdomAnna Fali UNQUALIFIED
Kaitlin OstroskyIndiaAnna Fali RENEWAL
Leon OldroydRussiaAmy Elsner PROPOSAL
Alejandro PerinCanadaAnna Fali QUALIFIED
James ButtCanadaStephen Shaw RENEWAL
Munro FerenczItalyOnyama Limba UNQUALIFIED
Darci PoquetteUnited KingdomOnyama Limba PROPOSAL
Chavez BriddickItalyAnna Fali NEW
Leon OldroydRussiaIvan Magalhaes PROPOSAL
Salvatore StockhamRussiaIvan Magalhaes UNQUALIFIED
David DarakjyIndiaBernardo Dominic QUALIFIED
Misaki RoysterIndiaXuxue Feng NEGOTIATION
Smith GlickGermanyAnna Fali NEW
Nicolas IturbideBrazilBernardo Dominic QUALIFIED
Silvio SlusarskiJapanBernardo Dominic RENEWAL
Maria MarrierJapanAsiya Javayant PROPOSAL
Rodrigues CampainItalyOnyama Limba RENEWAL
David DarakjyBrazilXuxue Feng PROPOSAL
David DarakjyRussiaAnna Fali PROPOSAL
Izzy GarufiSpainAmy Elsner RENEWAL
Nicolas IturbideAustraliaElwin Sharvill NEW
Rodrigues CampainRussiaElwin Sharvill PROPOSAL
Salvatore StockhamSpainStephen Shaw NEW
Nicolas IturbideIndiaXuxue Feng RENEWAL
Kadeem FlosiIndiaElwin Sharvill NEGOTIATION
Mayumi KolmetzGermanyOnyama Limba UNQUALIFIED
Frozen Columns
Name
James Butt
Jennifer Amigon
Sinclair Waycott
James Butt
Silvio Slusarski
Isabel Bowley
Johnson Sergi
Leon Oldroyd
Emily Whobrey
Munro Ferencz
Octavia Malet
Adams Morasca
Aruna Figeroa
Nicolas Iturbide
Antonio Caudy
Francesco Shinko
Salvatore Stockham
Aruna Figeroa
Misaki Royster
Greenwood Bolognia
Murillo Malet
Stacey Maclead
Tony Foller
David Darakjy
Leon Oldroyd
Sinclair Waycott
Smith Glick
Arvin Albares
Arvin Albares
Jennifer Amigon
Isabel Bowley
Jones Vocelka
James Butt
Chavez Briddick
Alejandro Perin
Murillo Malet
Mujtaba Nicka
Jones Vocelka
Jeanfrancois Venere
Salvatore Stockham
Costa Dilliard
Juan Wieser
Faith Gillian
Francesco Shinko
Munro Ferencz
Murillo Malet
Munro Ferencz
Jeanfrancois Venere
James Butt
Greenwood Bolognia
IdCountryDate
1000United Kingdom2026-04-13
1001Spain2026-04-12
1002India2026-04-05
1003Brazil2026-03-27
1004Argentina2026-04-05
1005India2026-03-29
1006United Kingdom2026-04-16
1007Italy2026-04-05
1008Spain2026-03-27
1009Canada2026-03-28
1010Australia2026-04-20
1011India2026-04-05
1012France2026-04-14
1013Germany2026-04-19
1014Argentina2026-03-28
1015United Kingdom2026-04-23
1016Canada2026-04-21
1017France2026-04-11
1018Argentina2026-04-03
1019Canada2026-04-12
1020Germany2026-04-09
1021Italy2026-04-14
1022Argentina2026-03-28
1023Brazil2026-04-23
1024United Kingdom2026-04-01
1025United Kingdom2026-04-18
1026Spain2026-04-14
1027Japan2026-03-30
1028Argentina2026-04-22
1029Japan2026-04-13
1030Australia2026-04-15
1031United Kingdom2026-04-07
1032Italy2026-04-05
1033Japan2026-04-05
1034Germany2026-04-13
1035Spain2026-03-26
1036Argentina2026-04-17
1037Canada2026-03-31
1038Brazil2026-04-04
1039Spain2026-04-03
1040Japan2026-04-18
1041Argentina2026-04-14
1042India2026-04-18
1043Canada2026-03-26
1044India2026-04-24
1045United Kingdom2026-04-20
1046India2026-04-20
1047Germany2026-04-15
1048Japan2026-04-04
1049Canada2026-04-11

On-Demand Data

NameIdCountryDate
James Butt1000Japan2026-03-29
Leja Caldarera1001Japan2026-04-19
Stacey Maclead1002Japan2026-04-23
Juan Wieser1003Australia2026-04-17
Aruna Figeroa1004Spain2026-04-05
Aruna Figeroa1005France2026-04-06
Stacey Maclead1006United Kingdom2026-04-10
Ashley Doe1007France2026-04-07
Costa Dilliard1008France2026-03-28
Chavez Briddick1009Brazil2026-03-29
Nicolas Iturbide1010Canada2026-04-03
Greenwood Bolognia1011Spain2026-03-26
Johnson Sergi1012Brazil2026-04-16
Julie Stenseth1013Spain2026-04-19
Morrow Ruta1014Argentina2026-03-28
Rodrigues Campain1015France2026-04-15
Alejandro Perin1016Brazil2026-03-26
Aditya Kusko1017Japan2026-04-22
Wickens Nestle1018Russia2026-04-07
Kadeem Flosi1019Russia2026-04-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Adams MorascaSpainXuxue Feng UNQUALIFIED
Aditya KuskoIndiaOnyama Limba NEW
Clifford RimUnited KingdomElwin Sharvill RENEWAL
Jeanfrancois VenereArgentinaAsiya Javayant RENEWAL
Claire TollnerSpainXuxue Feng UNQUALIFIED
Ricardo GauchoCanadaAsiya Javayant PROPOSAL
Alejandro PerinUnited KingdomIvan Magalhaes QUALIFIED
James ButtJapanIoni Bowcher QUALIFIED
David DarakjyJapanAmy Elsner PROPOSAL
Ricardo GauchoJapanAnna Fali NEW
Ricardo GauchoSpainIvan Magalhaes RENEWAL
Julie StensethJapanBernardo Dominic NEGOTIATION
Nicolas IturbideCanadaElwin Sharvill NEGOTIATION
Jeanfrancois VenereFranceAsiya Javayant RENEWAL
Sinclair WaycottSpainIvan Magalhaes NEGOTIATION
Jennifer AmigonUnited KingdomIvan Magalhaes NEW
Maisha RulapaughFranceStephen Shaw QUALIFIED
Maisha RulapaughSpainAmy Elsner RENEWAL
Misaki RoysterJapanXuxue Feng RENEWAL
Chavez BriddickAustraliaStephen Shaw UNQUALIFIED
Francesco ShinkoUnited KingdomXuxue Feng NEW
Claire TollnerItalyAsiya Javayant NEGOTIATION
Jones VocelkaCanadaAmy Elsner QUALIFIED
Francesco ShinkoRussiaIoni Bowcher QUALIFIED
Kadeem FlosiAustraliaElwin Sharvill QUALIFIED
Rodrigues CampainArgentinaIvan Magalhaes QUALIFIED
Costa DilliardGermanyIvan Magalhaes PROPOSAL
Ashley DoeSpainElwin Sharvill PROPOSAL
Murillo MaletItalyStephen Shaw NEGOTIATION
Jefferson SchemmerSpainXuxue Feng UNQUALIFIED
Aika InouyeIndiaXuxue Feng RENEWAL
Ivar PaprockiArgentinaAmy Elsner NEW
Faith GillianFranceAmy Elsner UNQUALIFIED
Darci PoquetteItalyXuxue Feng PROPOSAL
James ButtGermanyXuxue Feng QUALIFIED
Leja CaldareraItalyXuxue Feng PROPOSAL
Faith GillianRussiaXuxue Feng PROPOSAL
Sinclair WaycottArgentinaAsiya Javayant QUALIFIED
Silvio SlusarskiJapanBernardo Dominic RENEWAL
Mujtaba NickaAustraliaAnna Fali 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>