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 RutaJapanElwin Sharvill UNQUALIFIED
Ashley DoeCanadaAsiya Javayant NEW
Cody SaylorsJapanXuxue Feng NEGOTIATION
Maria MarrierSpainAmy Elsner QUALIFIED
Silvio SlusarskiUnited KingdomAnna Fali RENEWAL
Ricardo GauchoSpainOnyama Limba PROPOSAL
Leon OldroydFranceStephen Shaw QUALIFIED
Mayumi KolmetzBrazilIvan Magalhaes NEGOTIATION
Leon OldroydSpainBernardo Dominic UNQUALIFIED
Isabel BowleyAustraliaOnyama Limba UNQUALIFIED
Costa DilliardGermanyAsiya Javayant UNQUALIFIED
Alejandro PerinAustraliaXuxue Feng RENEWAL
Costa DilliardCanadaAsiya Javayant RENEWAL
Mujtaba NickaAustraliaXuxue Feng NEGOTIATION
Leon OldroydCanadaBernardo Dominic QUALIFIED
Maisha RulapaughBrazilXuxue Feng PROPOSAL
Misaki RoysterBrazilOnyama Limba UNQUALIFIED
Julie StensethFranceStephen Shaw RENEWAL
Ashley DoeUnited KingdomOnyama Limba UNQUALIFIED
Aika InouyeItalyXuxue Feng PROPOSAL
Murillo MaletCanadaXuxue Feng QUALIFIED
Johnson SergiJapanAmy Elsner NEGOTIATION
Jennifer AmigonSpainElwin Sharvill UNQUALIFIED
Adams MorascaRussiaBernardo Dominic UNQUALIFIED
Murillo MaletCanadaIoni Bowcher PROPOSAL
Alejandro PerinRussiaAsiya Javayant NEGOTIATION
James ButtIndiaStephen Shaw PROPOSAL
Silvio SlusarskiBrazilAmy Elsner NEGOTIATION
Misaki RoysterJapanIvan Magalhaes NEW
Mayumi KolmetzCanadaElwin Sharvill NEW
Jennifer AmigonBrazilAnna Fali QUALIFIED
Misaki RoysterCanadaIoni Bowcher QUALIFIED
Julie StensethFranceBernardo Dominic RENEWAL
Faith GillianArgentinaXuxue Feng NEW
Stacey MacleadSpainElwin Sharvill NEW
Chavez BriddickArgentinaAmy Elsner RENEWAL
Alejandro PerinBrazilOnyama Limba PROPOSAL
Alejandro PerinFranceAsiya Javayant RENEWAL
Nicolas IturbideSpainAsiya Javayant NEW
Maria MarrierJapanElwin Sharvill NEGOTIATION
Misaki RoysterArgentinaElwin Sharvill PROPOSAL
Smith GlickFranceOnyama Limba PROPOSAL
Faith GillianBrazilOnyama Limba RENEWAL
Juan WieserCanadaAmy Elsner QUALIFIED
Emily WhobreyUnited KingdomOnyama Limba RENEWAL
Darci PoquetteSpainAnna Fali RENEWAL
Cody SaylorsSpainAmy Elsner RENEWAL
Jennifer AmigonIndiaIoni Bowcher UNQUALIFIED
Aditya KuskoBrazilOnyama Limba UNQUALIFIED
Salvatore StockhamItalyStephen Shaw PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Francesco ShinkoGermanyAmy Elsner UNQUALIFIED
Greenwood BologniaIndiaStephen Shaw NEW
Octavia MaletAustraliaAmy Elsner UNQUALIFIED
Claire TollnerSpainBernardo Dominic NEW
Claire TollnerSpainBernardo Dominic PROPOSAL
Ricardo GauchoGermanyOnyama Limba RENEWAL
Maria MarrierJapanAnna Fali QUALIFIED
Kaitlin OstroskyRussiaIvan Magalhaes RENEWAL
Rodrigues CampainFranceAmy Elsner QUALIFIED
David DarakjyCanadaOnyama Limba QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Kaitlin OstroskyArgentina2026-04-19Rangoni Of Florence UNQUALIFIED14Amy Elsner
1001Deepesh ChuiGermany2026-04-05Feltz Printing Service NEW39Asiya Javayant
1002Maria MarrierAustralia2026-04-21Rousseaux, Michael Esq RENEWAL86Amy Elsner
1003Mujtaba NickaUnited Kingdom2026-03-30Rousseaux, Michael Esq RENEWAL43Anna Fali
1004Mayumi KolmetzBrazil2026-04-10Chapman, Ross E Esq NEW45Xuxue Feng
1005Jones VocelkaRussia2026-04-18Feiner Bros PROPOSAL37Elwin Sharvill
1006Aruna FigeroaFrance2026-04-12Morlong Associates UNQUALIFIED56Ioni Bowcher
1007Adams MorascaAustralia2026-04-12Benton, John B Jr NEGOTIATION0Ivan Magalhaes
1008David DarakjyItaly2026-04-20King, Christopher A Esq QUALIFIED59Ioni Bowcher
1009Octavia MaletArgentina2026-04-25Chapman, Ross E Esq RENEWAL76Asiya Javayant
1010Jefferson SchemmerIndia2026-04-15Buckley Miller Wright RENEWAL91Bernardo Dominic
1011Nicolas IturbideBrazil2026-04-16Feltz Printing Service QUALIFIED1Stephen Shaw
1012Silvio SlusarskiArgentina2026-04-15Rangoni Of Florence QUALIFIED13Anna Fali
1013Salvatore StockhamRussia2026-04-06Commercial Press NEGOTIATION77Ivan Magalhaes
1014Aruna FigeroaJapan2026-04-13Chanay, Jeffrey A Esq PROPOSAL62Elwin Sharvill
1015Aika InouyeCanada2026-04-13Benton, John B Jr NEGOTIATION68Ivan Magalhaes
1016Jefferson SchemmerGermany2026-03-30Chapman, Ross E Esq PROPOSAL62Ioni Bowcher
1017Arvin AlbaresSpain2026-04-15Morlong Associates UNQUALIFIED48Amy Elsner
1018Izzy GarufiAustralia2026-04-22Printing Dimensions PROPOSAL28Xuxue Feng
1019Costa DilliardUnited Kingdom2026-03-31King, Christopher A Esq PROPOSAL52Anna Fali
1020Chavez BriddickFrance2026-04-09Rousseaux, Michael Esq NEW83Xuxue Feng
1021James ButtRussia2026-04-21Printing Dimensions RENEWAL65Onyama Limba
1022Jones VocelkaCanada2026-04-26Printing Dimensions QUALIFIED12Amy Elsner
1023Aika InouyeFrance2026-04-23King, Christopher A Esq NEW17Amy Elsner
1024Kadeem FlosiArgentina2026-03-30Chanay, Jeffrey A Esq UNQUALIFIED91Anna Fali
1025Ashley DoeFrance2026-04-13Morlong Associates UNQUALIFIED63Amy Elsner
1026Costa DilliardAustralia2026-03-31Rousseaux, Michael Esq UNQUALIFIED24Ioni Bowcher
1027Kadeem FlosiIndia2026-04-18Dorl, James J Esq QUALIFIED2Ioni Bowcher
1028Morrow RutaCanada2026-04-10Benton, John B Jr UNQUALIFIED28Ivan Magalhaes
1029Jennifer AmigonItaly2026-04-23Chapman, Ross E Esq RENEWAL20Ivan Magalhaes
1030Julie StensethItaly2026-04-12Dorl, James J Esq QUALIFIED39Ioni Bowcher
1031Adams MorascaSpain2026-04-07Benton, John B Jr UNQUALIFIED87Asiya Javayant
1032Sinclair WaycottAustralia2026-04-03Buckley Miller Wright PROPOSAL87Bernardo Dominic
1033Costa DilliardSpain2026-04-03Chanay, Jeffrey A Esq RENEWAL70Stephen Shaw
1034Clifford RimArgentina2026-04-03King, Christopher A Esq RENEWAL28Stephen Shaw
1035Wickens NestleCanada2026-04-16Morlong Associates NEGOTIATION90Elwin Sharvill
1036Stacey MacleadCanada2026-04-26Morlong Associates NEW15Onyama Limba
1037Sinclair WaycottAustralia2026-04-22Buckley Miller Wright QUALIFIED46Onyama Limba
1038Leon OldroydAustralia2026-04-27Commercial Press QUALIFIED81Ioni Bowcher
1039Adams MorascaIndia2026-04-22Rousseaux, Michael Esq RENEWAL11Stephen Shaw
1040Francesco ShinkoIndia2026-04-13Buckley Miller Wright PROPOSAL6Ivan Magalhaes
1041Faith GillianArgentina2026-04-24Chemel, James L Cpa NEGOTIATION7Onyama Limba
1042Deepesh ChuiSpain2026-04-09Dorl, James J Esq NEW91Stephen Shaw
1043Jennifer AmigonBrazil2026-04-25Commercial Press PROPOSAL61Elwin Sharvill
1044Isabel BowleySpain2026-03-31Dorl, James J Esq NEW56Asiya Javayant
1045Antonio CaudyGermany2026-04-09Commercial Press QUALIFIED56Bernardo Dominic
1046Chavez BriddickGermany2026-04-17Buckley Miller Wright QUALIFIED35Ivan Magalhaes
1047Darci PoquetteCanada2026-03-30Commercial Press QUALIFIED6Stephen Shaw
1048Smith GlickGermany2026-04-06Rousseaux, Michael Esq QUALIFIED32Amy Elsner
1049Darci PoquetteArgentina2026-04-03Commercial Press NEW69Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Izzy GarufiIndiaAnna Fali QUALIFIED
Tony FollerArgentinaAsiya Javayant PROPOSAL
Ashley DoeJapanAsiya Javayant QUALIFIED
Wickens NestleArgentinaBernardo Dominic RENEWAL
Alejandro PerinIndiaAsiya Javayant QUALIFIED
Smith GlickBrazilBernardo Dominic NEGOTIATION
Ivar PaprockiRussiaAnna Fali RENEWAL
Silvio SlusarskiRussiaOnyama Limba RENEWAL
Rodrigues CampainBrazilAmy Elsner NEW
Chavez BriddickArgentinaElwin Sharvill NEW
Murillo MaletGermanyBernardo Dominic NEW
Silvio SlusarskiUnited KingdomBernardo Dominic NEW
Nicolas IturbideArgentinaAmy Elsner QUALIFIED
Smith GlickBrazilElwin Sharvill UNQUALIFIED
Costa DilliardAustraliaAnna Fali PROPOSAL
Alejandro PerinJapanElwin Sharvill PROPOSAL
David DarakjyAustraliaStephen Shaw NEW
Stacey MacleadUnited KingdomIvan Magalhaes UNQUALIFIED
Kadeem FlosiAustraliaStephen Shaw QUALIFIED
Jones VocelkaArgentinaBernardo Dominic PROPOSAL
Jefferson SchemmerJapanXuxue Feng NEGOTIATION
Emily WhobreyGermanyStephen Shaw QUALIFIED
Salvatore StockhamAustraliaAmy Elsner PROPOSAL
Isabel BowleyItalyElwin Sharvill UNQUALIFIED
Kaitlin OstroskyIndiaBernardo Dominic PROPOSAL
Darci PoquetteAustraliaAsiya Javayant RENEWAL
Faith GillianFranceAnna Fali NEGOTIATION
Antonio CaudyAustraliaOnyama Limba QUALIFIED
Izzy GarufiBrazilStephen Shaw QUALIFIED
Costa DilliardUnited KingdomIoni Bowcher NEGOTIATION
Izzy GarufiIndiaAmy Elsner NEW
Darci PoquetteIndiaIoni Bowcher RENEWAL
Smith GlickAustraliaIvan Magalhaes UNQUALIFIED
Sinclair WaycottRussiaOnyama Limba NEGOTIATION
Jefferson SchemmerAustraliaXuxue Feng QUALIFIED
Kaitlin OstroskyItalyElwin Sharvill RENEWAL
Ivar PaprockiUnited KingdomBernardo Dominic RENEWAL
Stacey MacleadItalyIoni Bowcher RENEWAL
James ButtIndiaXuxue Feng NEW
Maria MarrierSpainElwin Sharvill NEGOTIATION
Costa DilliardRussiaAsiya Javayant RENEWAL
Juan WieserArgentinaElwin Sharvill QUALIFIED
Alejandro PerinBrazilElwin Sharvill QUALIFIED
Francesco ShinkoRussiaStephen Shaw NEGOTIATION
Murillo MaletJapanIvan Magalhaes PROPOSAL
Juan WieserRussiaXuxue Feng PROPOSAL
Adams MorascaAustraliaAmy Elsner NEGOTIATION
Alejandro PerinFranceIoni Bowcher PROPOSAL
Ashley DoeRussiaElwin Sharvill NEW
Aditya KuskoArgentinaBernardo Dominic RENEWAL
Frozen Columns
Name
Ricardo Gaucho
Mayumi Kolmetz
Arvin Albares
Kaitlin Ostrosky
Jefferson Schemmer
Kadeem Flosi
Smith Glick
James Butt
Darci Poquette
David Darakjy
Jones Vocelka
Adams Morasca
Kaitlin Ostrosky
Chavez Briddick
Chavez Briddick
Sinclair Waycott
Tony Foller
David Darakjy
Jefferson Schemmer
Munro Ferencz
Munro Ferencz
Leon Oldroyd
Mayumi Kolmetz
Aruna Figeroa
Sinclair Waycott
Greenwood Bolognia
Silvio Slusarski
Izzy Garufi
Jefferson Schemmer
Greenwood Bolognia
Alejandro Perin
Tony Foller
Misaki Royster
David Darakjy
Jennifer Amigon
Francesco Shinko
Aruna Figeroa
Tony Foller
Jennifer Amigon
Clifford Rim
Wickens Nestle
Kaitlin Ostrosky
David Darakjy
Julie Stenseth
Kadeem Flosi
Jeanfrancois Venere
Isabel Bowley
Clifford Rim
Mayumi Kolmetz
Greenwood Bolognia
IdCountryDate
1000United Kingdom2026-04-24
1001United Kingdom2026-03-30
1002India2026-04-08
1003Italy2026-04-26
1004Germany2026-04-25
1005United Kingdom2026-04-15
1006Spain2026-04-06
1007Australia2026-04-25
1008Spain2026-04-24
1009United Kingdom2026-04-17
1010United Kingdom2026-04-02
1011India2026-04-19
1012Russia2026-04-24
1013Italy2026-04-04
1014Australia2026-04-26
1015Russia2026-04-13
1016United Kingdom2026-04-13
1017Spain2026-04-02
1018Japan2026-04-08
1019Argentina2026-04-04
1020Germany2026-04-17
1021France2026-04-17
1022Spain2026-04-09
1023Germany2026-04-09
1024United Kingdom2026-04-27
1025Spain2026-04-21
1026Spain2026-04-05
1027Spain2026-04-10
1028Japan2026-04-06
1029Japan2026-04-04
1030France2026-04-17
1031France2026-04-25
1032Spain2026-04-05
1033Italy2026-04-20
1034India2026-04-02
1035United Kingdom2026-03-29
1036Australia2026-04-17
1037Argentina2026-04-27
1038Japan2026-04-23
1039Brazil2026-04-13
1040Italy2026-04-21
1041Italy2026-04-12
1042Spain2026-04-04
1043Japan2026-04-02
1044Japan2026-04-15
1045Argentina2026-04-15
1046Spain2026-04-16
1047Spain2026-04-20
1048France2026-04-20
1049France2026-04-15

On-Demand Data

NameIdCountryDate
Morrow Ruta1000Australia2026-04-24
Aruna Figeroa1001Russia2026-04-14
Jennifer Amigon1002Brazil2026-04-20
Chavez Briddick1003Spain2026-04-18
Maria Marrier1004Canada2026-04-05
Cody Saylors1005Germany2026-04-26
Kadeem Flosi1006India2026-04-22
James Butt1007Russia2026-04-01
Deepesh Chui1008Argentina2026-04-05
Juan Wieser1009Japan2026-04-13
Nicolas Iturbide1010Italy2026-04-10
Deepesh Chui1011Canada2026-04-06
Emily Whobrey1012Australia2026-04-16
Leja Caldarera1013Russia2026-04-21
Aditya Kusko1014Russia2026-03-29
Clifford Rim1015Germany2026-04-07
Alejandro Perin1016Canada2026-04-25
Costa Dilliard1017Australia2026-04-08
Antonio Caudy1018Germany2026-04-19
Munro Ferencz1019Germany2026-04-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aditya KuskoAustraliaOnyama Limba PROPOSAL
Mayumi KolmetzAustraliaIoni Bowcher UNQUALIFIED
Tony FollerSpainAsiya Javayant PROPOSAL
Kadeem FlosiJapanStephen Shaw RENEWAL
Antonio CaudyFranceAnna Fali UNQUALIFIED
Mayumi KolmetzGermanyOnyama Limba UNQUALIFIED
Ivar PaprockiIndiaStephen Shaw NEW
Ashley DoeBrazilOnyama Limba RENEWAL
Isabel BowleyItalyAmy Elsner PROPOSAL
Sinclair WaycottFranceBernardo Dominic PROPOSAL
Faith GillianCanadaAnna Fali UNQUALIFIED
Julie StensethRussiaIoni Bowcher RENEWAL
Ricardo GauchoRussiaIoni Bowcher RENEWAL
Darci PoquetteUnited KingdomXuxue Feng UNQUALIFIED
Misaki RoysterJapanBernardo Dominic QUALIFIED
Juan WieserAustraliaAnna Fali UNQUALIFIED
Isabel BowleyItalyOnyama Limba QUALIFIED
James ButtIndiaStephen Shaw UNQUALIFIED
Chavez BriddickGermanyAsiya Javayant NEW
Sinclair WaycottItalyXuxue Feng NEW
Aditya KuskoJapanIvan Magalhaes PROPOSAL
Arvin AlbaresSpainXuxue Feng UNQUALIFIED
Antonio CaudyIndiaOnyama Limba NEW
Tony FollerUnited KingdomAmy Elsner QUALIFIED
Costa DilliardGermanyStephen Shaw NEW
Ashley DoeAustraliaIvan Magalhaes PROPOSAL
Antonio CaudyArgentinaBernardo Dominic NEGOTIATION
Kadeem FlosiCanadaElwin Sharvill RENEWAL
Kadeem FlosiItalyXuxue Feng NEW
Deepesh ChuiCanadaAnna Fali NEGOTIATION
Deepesh ChuiCanadaIvan Magalhaes PROPOSAL
Chavez BriddickItalyStephen Shaw UNQUALIFIED
Adams MorascaBrazilIoni Bowcher QUALIFIED
Morrow RutaSpainElwin Sharvill NEW
Faith GillianSpainOnyama Limba UNQUALIFIED
Kadeem FlosiAustraliaStephen Shaw UNQUALIFIED
Julie StensethCanadaAsiya Javayant NEW
Faith GillianAustraliaAsiya Javayant PROPOSAL
Adams MorascaAustraliaBernardo Dominic UNQUALIFIED
Leja CaldareraBrazilAnna Fali QUALIFIED

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