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
Rodrigues CampainSpainElwin Sharvill QUALIFIED
Jefferson SchemmerUnited KingdomXuxue Feng PROPOSAL
Stacey MacleadFranceAnna Fali RENEWAL
Faith GillianRussiaOnyama Limba RENEWAL
Smith GlickArgentinaXuxue Feng PROPOSAL
Rodrigues CampainAustraliaAmy Elsner RENEWAL
Rodrigues CampainIndiaAsiya Javayant PROPOSAL
Octavia MaletJapanBernardo Dominic UNQUALIFIED
Mayumi KolmetzSpainAnna Fali NEGOTIATION
Stacey MacleadItalyIoni Bowcher NEGOTIATION
Sinclair WaycottJapanOnyama Limba PROPOSAL
Adams MorascaFranceIoni Bowcher NEGOTIATION
Ashley DoeArgentinaBernardo Dominic NEGOTIATION
Munro FerenczSpainIvan Magalhaes NEGOTIATION
Octavia MaletSpainIoni Bowcher QUALIFIED
Morrow RutaAustraliaAnna Fali PROPOSAL
Faith GillianJapanStephen Shaw QUALIFIED
Maisha RulapaughRussiaOnyama Limba PROPOSAL
Aditya KuskoUnited KingdomBernardo Dominic QUALIFIED
Juan WieserArgentinaStephen Shaw NEGOTIATION
Maria MarrierUnited KingdomElwin Sharvill NEW
Adams MorascaArgentinaIvan Magalhaes NEW
Johnson SergiFranceOnyama Limba NEW
Alejandro PerinFranceOnyama Limba NEW
Silvio SlusarskiGermanyElwin Sharvill QUALIFIED
Leja CaldareraBrazilXuxue Feng NEW
Ashley DoeJapanXuxue Feng UNQUALIFIED
Mujtaba NickaItalyAsiya Javayant PROPOSAL
James ButtUnited KingdomAsiya Javayant RENEWAL
Maisha RulapaughCanadaStephen Shaw UNQUALIFIED
Jones VocelkaUnited KingdomXuxue Feng NEGOTIATION
Arvin AlbaresJapanAsiya Javayant UNQUALIFIED
Smith GlickIndiaElwin Sharvill NEW
Ivar PaprockiArgentinaIoni Bowcher NEW
David DarakjyRussiaBernardo Dominic QUALIFIED
Tony FollerItalyAsiya Javayant PROPOSAL
Aruna FigeroaUnited KingdomAmy Elsner UNQUALIFIED
Izzy GarufiSpainBernardo Dominic QUALIFIED
David DarakjyAustraliaStephen Shaw RENEWAL
Clifford RimCanadaBernardo Dominic QUALIFIED
Antonio CaudyGermanyXuxue Feng NEGOTIATION
Octavia MaletJapanStephen Shaw QUALIFIED
Murillo MaletSpainOnyama Limba QUALIFIED
James ButtAustraliaAsiya Javayant NEGOTIATION
Maria MarrierItalyAnna Fali UNQUALIFIED
Maria MarrierGermanyAmy Elsner UNQUALIFIED
Chavez BriddickBrazilAsiya Javayant NEGOTIATION
Jefferson SchemmerGermanyAnna Fali NEGOTIATION
Stacey MacleadBrazilAnna Fali UNQUALIFIED
Leon OldroydSpainIoni Bowcher UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Isabel BowleyArgentinaIvan Magalhaes QUALIFIED
Rodrigues CampainGermanyOnyama Limba PROPOSAL
Ashley DoeJapanAnna Fali PROPOSAL
Aditya KuskoBrazilOnyama Limba NEGOTIATION
Aika InouyeBrazilAmy Elsner UNQUALIFIED
Ricardo GauchoItalyStephen Shaw RENEWAL
Mayumi KolmetzUnited KingdomIoni Bowcher NEGOTIATION
Juan WieserBrazilAsiya Javayant RENEWAL
Munro FerenczItalyElwin Sharvill UNQUALIFIED
Chavez BriddickBrazilAsiya Javayant NEW
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Stacey MacleadFrance2026-05-02Commercial Press NEGOTIATION0Elwin Sharvill
1001Clifford RimCanada2026-05-10Chanay, Jeffrey A Esq PROPOSAL92Onyama Limba
1002Clifford RimCanada2026-05-15Rousseaux, Michael Esq PROPOSAL76Amy Elsner
1003Antonio CaudyIndia2026-05-03Printing Dimensions QUALIFIED24Bernardo Dominic
1004Silvio SlusarskiFrance2026-05-19Commercial Press NEW12Bernardo Dominic
1005Morrow RutaSpain2026-05-10Chemel, James L Cpa NEW50Amy Elsner
1006David DarakjyFrance2026-05-31Benton, John B Jr NEGOTIATION98Stephen Shaw
1007Misaki RoysterItaly2026-05-25Rangoni Of Florence QUALIFIED54Xuxue Feng
1008Nicolas IturbideJapan2026-05-27Chapman, Ross E Esq UNQUALIFIED6Ioni Bowcher
1009Alejandro PerinArgentina2026-05-06Dorl, James J Esq NEW80Xuxue Feng
1010Aditya KuskoSpain2026-05-24King, Christopher A Esq NEW12Bernardo Dominic
1011Isabel BowleyAustralia2026-05-12Chemel, James L Cpa NEW92Xuxue Feng
1012Francesco ShinkoBrazil2026-05-09Dorl, James J Esq QUALIFIED23Onyama Limba
1013Faith GillianJapan2026-05-28Rousseaux, Michael Esq UNQUALIFIED47Onyama Limba
1014Smith GlickAustralia2026-05-17Benton, John B Jr QUALIFIED89Anna Fali
1015Stacey MacleadGermany2026-05-30Chapman, Ross E Esq NEGOTIATION9Bernardo Dominic
1016Costa DilliardItaly2026-05-20Buckley Miller Wright PROPOSAL78Ioni Bowcher
1017Nicolas IturbideSpain2026-05-06Truhlar And Truhlar Attys RENEWAL6Ioni Bowcher
1018Octavia MaletArgentina2026-05-03Rangoni Of Florence UNQUALIFIED15Xuxue Feng
1019Mujtaba NickaArgentina2026-05-25Truhlar And Truhlar Attys QUALIFIED64Ivan Magalhaes
1020Ricardo GauchoIndia2026-05-23Dorl, James J Esq RENEWAL64Onyama Limba
1021Leja CaldareraRussia2026-05-25King, Christopher A Esq UNQUALIFIED1Onyama Limba
1022Murillo MaletAustralia2026-05-16King, Christopher A Esq NEW63Ivan Magalhaes
1023Silvio SlusarskiFrance2026-05-14Chapman, Ross E Esq QUALIFIED73Ivan Magalhaes
1024David DarakjyGermany2026-05-20Dorl, James J Esq NEW0Ioni Bowcher
1025Morrow RutaAustralia2026-05-29Buckley Miller Wright UNQUALIFIED80Asiya Javayant
1026Ricardo GauchoUnited Kingdom2026-05-11Printing Dimensions PROPOSAL93Onyama Limba
1027James ButtJapan2026-05-31Dorl, James J Esq PROPOSAL78Bernardo Dominic
1028Sinclair WaycottBrazil2026-05-11Morlong Associates QUALIFIED57Onyama Limba
1029Arvin AlbaresUnited Kingdom2026-05-04Printing Dimensions RENEWAL72Amy Elsner
1030Sinclair WaycottArgentina2026-05-11Commercial Press NEGOTIATION36Amy Elsner
1031Ashley DoeGermany2026-05-05Buckley Miller Wright NEW37Xuxue Feng
1032Izzy GarufiUnited Kingdom2026-05-03Commercial Press NEW36Onyama Limba
1033Darci PoquetteCanada2026-05-12Rousseaux, Michael Esq QUALIFIED11Stephen Shaw
1034Ashley DoeBrazil2026-05-07Chanay, Jeffrey A Esq NEGOTIATION12Bernardo Dominic
1035Maisha RulapaughRussia2026-05-26Feiner Bros NEW91Onyama Limba
1036Chavez BriddickFrance2026-05-16Rangoni Of Florence RENEWAL18Amy Elsner
1037Leja CaldareraUnited Kingdom2026-05-20Benton, John B Jr NEGOTIATION25Onyama Limba
1038Clifford RimSpain2026-05-30King, Christopher A Esq QUALIFIED54Stephen Shaw
1039Octavia MaletGermany2026-05-30Chemel, James L Cpa UNQUALIFIED19Xuxue Feng
1040Mujtaba NickaIndia2026-05-21Buckley Miller Wright NEW26Bernardo Dominic
1041Tony FollerRussia2026-05-03Rangoni Of Florence PROPOSAL55Xuxue Feng
1042Antonio CaudyFrance2026-05-25Printing Dimensions NEGOTIATION10Bernardo Dominic
1043Jefferson SchemmerBrazil2026-05-02Rangoni Of Florence RENEWAL17Amy Elsner
1044Munro FerenczCanada2026-05-15Morlong Associates UNQUALIFIED4Xuxue Feng
1045Ricardo GauchoJapan2026-05-04Benton, John B Jr NEW71Elwin Sharvill
1046Maria MarrierArgentina2026-05-20Chanay, Jeffrey A Esq RENEWAL21Anna Fali
1047Ricardo GauchoCanada2026-05-29Chapman, Ross E Esq UNQUALIFIED40Ivan Magalhaes
1048Adams MorascaRussia2026-05-18Chanay, Jeffrey A Esq PROPOSAL36Bernardo Dominic
1049Arvin AlbaresItaly2026-05-26Rangoni Of Florence NEGOTIATION63Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Jefferson SchemmerBrazilOnyama Limba NEW
Murillo MaletRussiaAnna Fali QUALIFIED
Johnson SergiSpainIvan Magalhaes QUALIFIED
Cody SaylorsIndiaBernardo Dominic RENEWAL
Alejandro PerinJapanAnna Fali RENEWAL
Emily WhobreyUnited KingdomOnyama Limba NEGOTIATION
Maria MarrierIndiaOnyama Limba RENEWAL
Silvio SlusarskiRussiaAsiya Javayant NEW
Francesco ShinkoUnited KingdomBernardo Dominic PROPOSAL
Antonio CaudyRussiaAmy Elsner RENEWAL
Izzy GarufiAustraliaAsiya Javayant NEW
Leja CaldareraSpainAmy Elsner QUALIFIED
Costa DilliardUnited KingdomElwin Sharvill UNQUALIFIED
Greenwood BologniaSpainIvan Magalhaes NEGOTIATION
Clifford RimCanadaAsiya Javayant RENEWAL
Antonio CaudyFranceAsiya Javayant PROPOSAL
Rodrigues CampainSpainIoni Bowcher NEW
Stacey MacleadUnited KingdomOnyama Limba RENEWAL
Aditya KuskoGermanyXuxue Feng RENEWAL
Faith GillianBrazilAmy Elsner NEW
James ButtAustraliaElwin Sharvill QUALIFIED
Munro FerenczCanadaIvan Magalhaes NEGOTIATION
Kadeem FlosiIndiaBernardo Dominic NEW
Ivar PaprockiAustraliaElwin Sharvill PROPOSAL
Francesco ShinkoBrazilElwin Sharvill NEW
Izzy GarufiFranceStephen Shaw NEW
Sinclair WaycottBrazilAnna Fali UNQUALIFIED
Greenwood BologniaSpainAmy Elsner UNQUALIFIED
Maria MarrierIndiaElwin Sharvill QUALIFIED
Cody SaylorsUnited KingdomOnyama Limba QUALIFIED
Mayumi KolmetzArgentinaBernardo Dominic RENEWAL
Jeanfrancois VenereBrazilAmy Elsner RENEWAL
Rodrigues CampainSpainXuxue Feng NEGOTIATION
Deepesh ChuiUnited KingdomAsiya Javayant UNQUALIFIED
Jones VocelkaUnited KingdomXuxue Feng UNQUALIFIED
Jennifer AmigonFranceAmy Elsner NEW
Claire TollnerUnited KingdomStephen Shaw NEW
Izzy GarufiSpainOnyama Limba NEGOTIATION
Ricardo GauchoSpainAnna Fali QUALIFIED
Francesco ShinkoIndiaAmy Elsner PROPOSAL
Francesco ShinkoRussiaIvan Magalhaes UNQUALIFIED
Aditya KuskoIndiaXuxue Feng NEGOTIATION
Ivar PaprockiUnited KingdomIvan Magalhaes QUALIFIED
Murillo MaletSpainAmy Elsner NEW
Jones VocelkaIndiaAnna Fali PROPOSAL
Aditya KuskoBrazilXuxue Feng QUALIFIED
Octavia MaletGermanyIvan Magalhaes RENEWAL
Rodrigues CampainGermanyStephen Shaw PROPOSAL
Cody SaylorsJapanOnyama Limba RENEWAL
Aruna FigeroaFranceXuxue Feng NEGOTIATION
Frozen Columns
Name
Mujtaba Nicka
Kaitlin Ostrosky
Sinclair Waycott
Ivar Paprocki
Juan Wieser
Izzy Garufi
Francesco Shinko
Leja Caldarera
Juan Wieser
Octavia Malet
Aruna Figeroa
Sinclair Waycott
Costa Dilliard
Maria Marrier
Aika Inouye
Ashley Doe
Faith Gillian
Alejandro Perin
Johnson Sergi
Munro Ferencz
Aditya Kusko
Salvatore Stockham
Mujtaba Nicka
Antonio Caudy
Antonio Caudy
Francesco Shinko
Smith Glick
Kadeem Flosi
Costa Dilliard
Costa Dilliard
Maria Marrier
Kaitlin Ostrosky
Clifford Rim
David Darakjy
Claire Tollner
Smith Glick
Tony Foller
Munro Ferencz
Sinclair Waycott
Smith Glick
Kadeem Flosi
Johnson Sergi
Kaitlin Ostrosky
Greenwood Bolognia
Aruna Figeroa
Ashley Doe
Deepesh Chui
Emily Whobrey
Emily Whobrey
Ricardo Gaucho
IdCountryDate
1000Canada2026-05-17
1001France2026-05-29
1002France2026-05-06
1003Italy2026-05-23
1004Canada2026-05-15
1005France2026-05-09
1006Germany2026-05-10
1007Canada2026-05-11
1008Brazil2026-05-12
1009India2026-05-28
1010Russia2026-05-09
1011Italy2026-05-05
1012Russia2026-05-31
1013Spain2026-05-25
1014Italy2026-05-28
1015France2026-05-14
1016Germany2026-05-16
1017Canada2026-05-06
1018Brazil2026-05-25
1019India2026-05-06
1020Australia2026-05-13
1021Spain2026-05-21
1022Argentina2026-05-07
1023Japan2026-05-22
1024Germany2026-05-05
1025France2026-05-28
1026Japan2026-05-23
1027Japan2026-05-06
1028France2026-05-29
1029Spain2026-05-24
1030Canada2026-05-27
1031Germany2026-05-02
1032Canada2026-05-11
1033Japan2026-05-18
1034United Kingdom2026-05-27
1035Russia2026-05-24
1036Brazil2026-05-17
1037Canada2026-05-12
1038Australia2026-05-31
1039Argentina2026-05-26
1040Australia2026-05-15
1041Australia2026-05-29
1042Australia2026-05-14
1043Japan2026-05-23
1044India2026-05-16
1045Spain2026-05-08
1046Argentina2026-05-08
1047Australia2026-05-12
1048United Kingdom2026-05-13
1049India2026-05-16

On-Demand Data

NameIdCountryDate
Leja Caldarera1000United Kingdom2026-05-22
Kadeem Flosi1001Argentina2026-05-21
Leon Oldroyd1002Brazil2026-05-30
Jennifer Amigon1003Brazil2026-05-16
Izzy Garufi1004Brazil2026-05-05
Clifford Rim1005Canada2026-05-16
Mayumi Kolmetz1006Canada2026-05-25
Leon Oldroyd1007Germany2026-05-06
Sinclair Waycott1008Brazil2026-05-30
Mayumi Kolmetz1009Germany2026-05-13
Jeanfrancois Venere1010Japan2026-05-16
Deepesh Chui1011Russia2026-05-06
Alejandro Perin1012France2026-05-05
Wickens Nestle1013United Kingdom2026-05-04
Smith Glick1014Spain2026-05-16
Darci Poquette1015France2026-05-20
Julie Stenseth1016United Kingdom2026-05-19
Mayumi Kolmetz1017Argentina2026-05-07
Darci Poquette1018Australia2026-05-02
Adams Morasca1019Brazil2026-05-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aika InouyeSpainBernardo Dominic RENEWAL
Clifford RimRussiaAmy Elsner NEW
Murillo MaletRussiaStephen Shaw PROPOSAL
David DarakjyJapanAsiya Javayant RENEWAL
Francesco ShinkoIndiaOnyama Limba NEW
Munro FerenczRussiaIoni Bowcher NEW
Murillo MaletArgentinaAsiya Javayant QUALIFIED
Sinclair WaycottSpainOnyama Limba NEW
Cody SaylorsSpainElwin Sharvill RENEWAL
David DarakjyUnited KingdomOnyama Limba RENEWAL
Claire TollnerItalyElwin Sharvill NEW
Izzy GarufiRussiaXuxue Feng UNQUALIFIED
Jones VocelkaSpainOnyama Limba PROPOSAL
Antonio CaudyCanadaIoni Bowcher NEW
Ivar PaprockiFranceStephen Shaw NEGOTIATION
Arvin AlbaresBrazilElwin Sharvill PROPOSAL
Mayumi KolmetzAustraliaOnyama Limba RENEWAL
Jefferson SchemmerCanadaIoni Bowcher NEGOTIATION
Misaki RoysterFranceAsiya Javayant NEGOTIATION
Salvatore StockhamSpainOnyama Limba RENEWAL
Jefferson SchemmerItalyElwin Sharvill QUALIFIED
Jennifer AmigonJapanIoni Bowcher RENEWAL
Mayumi KolmetzRussiaBernardo Dominic PROPOSAL
Aika InouyeIndiaOnyama Limba NEGOTIATION
Kadeem FlosiGermanyAsiya Javayant UNQUALIFIED
Stacey MacleadBrazilAsiya Javayant NEW
Maisha RulapaughUnited KingdomIvan Magalhaes PROPOSAL
Aika InouyeSpainBernardo Dominic NEGOTIATION
Johnson SergiAustraliaIoni Bowcher PROPOSAL
Murillo MaletAustraliaBernardo Dominic NEW
Silvio SlusarskiArgentinaIvan Magalhaes RENEWAL
Jefferson SchemmerItalyAmy Elsner UNQUALIFIED
Clifford RimUnited KingdomAsiya Javayant NEW
Salvatore StockhamGermanyAmy Elsner RENEWAL
Claire TollnerJapanAsiya Javayant QUALIFIED
Leon OldroydCanadaAmy Elsner PROPOSAL
David DarakjyItalyIoni Bowcher RENEWAL
Murillo MaletSpainAnna Fali NEW
Cody SaylorsRussiaOnyama Limba RENEWAL
Johnson SergiIndiaIoni Bowcher 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>