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 GarufiSpainIvan Magalhaes RENEWAL
Murillo MaletGermanyElwin Sharvill NEW
Alejandro PerinUnited KingdomXuxue Feng NEW
Darci PoquetteFranceAsiya Javayant UNQUALIFIED
Chavez BriddickJapanBernardo Dominic PROPOSAL
Octavia MaletRussiaAnna Fali QUALIFIED
Clifford RimCanadaStephen Shaw NEW
Octavia MaletUnited KingdomElwin Sharvill RENEWAL
James ButtBrazilXuxue Feng PROPOSAL
Aditya KuskoJapanAsiya Javayant NEW
Octavia MaletItalyOnyama Limba UNQUALIFIED
Rodrigues CampainRussiaIoni Bowcher QUALIFIED
Jones VocelkaAustraliaIoni Bowcher NEW
Francesco ShinkoArgentinaAmy Elsner UNQUALIFIED
Alejandro PerinRussiaStephen Shaw RENEWAL
Misaki RoysterUnited KingdomIoni Bowcher PROPOSAL
Darci PoquetteAustraliaAmy Elsner RENEWAL
Stacey MacleadAustraliaBernardo Dominic PROPOSAL
Leja CaldareraRussiaXuxue Feng PROPOSAL
Jennifer AmigonUnited KingdomXuxue Feng UNQUALIFIED
Julie StensethArgentinaAsiya Javayant NEGOTIATION
Aruna FigeroaSpainStephen Shaw UNQUALIFIED
Maisha RulapaughRussiaAnna Fali NEGOTIATION
James ButtUnited KingdomElwin Sharvill NEW
Rodrigues CampainIndiaIvan Magalhaes NEW
Jones VocelkaSpainBernardo Dominic UNQUALIFIED
Misaki RoysterItalyAnna Fali PROPOSAL
Munro FerenczAustraliaIvan Magalhaes UNQUALIFIED
Jennifer AmigonGermanyIvan Magalhaes QUALIFIED
Juan WieserRussiaXuxue Feng RENEWAL
Nicolas IturbideAustraliaBernardo Dominic PROPOSAL
Kaitlin OstroskyIndiaBernardo Dominic QUALIFIED
Adams MorascaAustraliaElwin Sharvill PROPOSAL
Maria MarrierArgentinaStephen Shaw QUALIFIED
Jeanfrancois VenereIndiaAmy Elsner NEW
Deepesh ChuiBrazilOnyama Limba PROPOSAL
Kadeem FlosiGermanyOnyama Limba UNQUALIFIED
Munro FerenczIndiaIvan Magalhaes PROPOSAL
Salvatore StockhamAustraliaIoni Bowcher NEW
Juan WieserFranceBernardo Dominic PROPOSAL
Arvin AlbaresBrazilBernardo Dominic RENEWAL
Deepesh ChuiFranceOnyama Limba NEW
Costa DilliardGermanyAmy Elsner PROPOSAL
Rodrigues CampainGermanyStephen Shaw PROPOSAL
Salvatore StockhamGermanyOnyama Limba QUALIFIED
Maisha RulapaughIndiaAmy Elsner RENEWAL
Faith GillianRussiaAnna Fali NEW
Claire TollnerJapanOnyama Limba UNQUALIFIED
Morrow RutaSpainOnyama Limba QUALIFIED
Smith GlickFranceAnna Fali UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Leon OldroydBrazilStephen Shaw QUALIFIED
Leon OldroydIndiaAmy Elsner PROPOSAL
Stacey MacleadUnited KingdomAnna Fali NEGOTIATION
Stacey MacleadBrazilAnna Fali NEGOTIATION
Deepesh ChuiItalyAnna Fali PROPOSAL
Johnson SergiBrazilAnna Fali PROPOSAL
Adams MorascaJapanAnna Fali RENEWAL
Murillo MaletSpainStephen Shaw RENEWAL
Nicolas IturbideUnited KingdomBernardo Dominic NEW
Jefferson SchemmerJapanIoni Bowcher PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Costa DilliardUnited Kingdom2026-06-13Feltz Printing Service NEW27Elwin Sharvill
1001Darci PoquetteJapan2026-06-19Benton, John B Jr UNQUALIFIED42Bernardo Dominic
1002Cody SaylorsItaly2026-06-15Rousseaux, Michael Esq UNQUALIFIED38Asiya Javayant
1003Chavez BriddickJapan2026-06-07Rousseaux, Michael Esq QUALIFIED54Ioni Bowcher
1004Aditya KuskoArgentina2026-06-04Buckley Miller Wright PROPOSAL13Onyama Limba
1005Munro FerenczItaly2026-05-27Printing Dimensions PROPOSAL87Onyama Limba
1006Deepesh ChuiFrance2026-06-13Buckley Miller Wright NEW70Elwin Sharvill
1007Adams MorascaGermany2026-06-10Commercial Press NEGOTIATION70Ioni Bowcher
1008Ashley DoeItaly2026-06-19Truhlar And Truhlar Attys UNQUALIFIED62Amy Elsner
1009Sinclair WaycottJapan2026-06-11Benton, John B Jr PROPOSAL76Asiya Javayant
1010Salvatore StockhamRussia2026-06-14Feiner Bros NEGOTIATION97Ivan Magalhaes
1011Jones VocelkaArgentina2026-06-16Truhlar And Truhlar Attys UNQUALIFIED61Ioni Bowcher
1012Arvin AlbaresRussia2026-06-10Truhlar And Truhlar Attys UNQUALIFIED65Anna Fali
1013Murillo MaletBrazil2026-05-22King, Christopher A Esq NEGOTIATION28Elwin Sharvill
1014Murillo MaletArgentina2026-06-06Dorl, James J Esq UNQUALIFIED95Amy Elsner
1015Faith GillianJapan2026-06-13Truhlar And Truhlar Attys QUALIFIED63Amy Elsner
1016Johnson SergiIndia2026-05-30Feltz Printing Service QUALIFIED76Onyama Limba
1017Greenwood BologniaItaly2026-06-06Printing Dimensions QUALIFIED13Ioni Bowcher
1018Darci PoquetteSpain2026-06-15Morlong Associates QUALIFIED27Anna Fali
1019Silvio SlusarskiRussia2026-06-07Dorl, James J Esq QUALIFIED50Xuxue Feng
1020David DarakjyCanada2026-06-20Chapman, Ross E Esq NEGOTIATION30Elwin Sharvill
1021Wickens NestleArgentina2026-05-28Printing Dimensions QUALIFIED29Ioni Bowcher
1022Juan WieserAustralia2026-05-28Buckley Miller Wright NEW34Bernardo Dominic
1023Leon OldroydRussia2026-06-04Feltz Printing Service PROPOSAL40Bernardo Dominic
1024Alejandro PerinSpain2026-06-02Chapman, Ross E Esq PROPOSAL3Stephen Shaw
1025Salvatore StockhamGermany2026-05-24Chemel, James L Cpa QUALIFIED72Anna Fali
1026Leon OldroydSpain2026-06-12Feltz Printing Service RENEWAL48Onyama Limba
1027Ivar PaprockiAustralia2026-05-26Chanay, Jeffrey A Esq PROPOSAL57Stephen Shaw
1028Aika InouyeFrance2026-06-14Buckley Miller Wright NEW60Stephen Shaw
1029Costa DilliardAustralia2026-05-30Commercial Press NEGOTIATION31Ioni Bowcher
1030Kadeem FlosiItaly2026-06-08Chemel, James L Cpa QUALIFIED99Ivan Magalhaes
1031Sinclair WaycottArgentina2026-05-28Feltz Printing Service UNQUALIFIED37Asiya Javayant
1032Aika InouyeSpain2026-05-31Morlong Associates RENEWAL68Elwin Sharvill
1033Ashley DoeIndia2026-05-26Feiner Bros QUALIFIED34Onyama Limba
1034Faith GillianItaly2026-05-24Feltz Printing Service UNQUALIFIED40Asiya Javayant
1035Isabel BowleyCanada2026-06-15Commercial Press RENEWAL27Anna Fali
1036Octavia MaletUnited Kingdom2026-06-06Dorl, James J Esq NEGOTIATION83Elwin Sharvill
1037Faith GillianGermany2026-05-24Dorl, James J Esq NEW50Stephen Shaw
1038Morrow RutaSpain2026-06-14Feltz Printing Service NEW86Onyama Limba
1039Clifford RimBrazil2026-06-15Printing Dimensions PROPOSAL80Asiya Javayant
1040Stacey MacleadArgentina2026-06-04Morlong Associates NEGOTIATION3Asiya Javayant
1041Maisha RulapaughBrazil2026-06-06Dorl, James J Esq QUALIFIED10Asiya Javayant
1042David DarakjyRussia2026-05-22Feiner Bros UNQUALIFIED38Anna Fali
1043Claire TollnerFrance2026-06-12Morlong Associates UNQUALIFIED45Elwin Sharvill
1044Mayumi KolmetzFrance2026-06-13Chemel, James L Cpa NEGOTIATION61Amy Elsner
1045Tony FollerUnited Kingdom2026-06-01Chapman, Ross E Esq NEW37Amy Elsner
1046Isabel BowleyBrazil2026-06-13Morlong Associates NEW22Asiya Javayant
1047Greenwood BologniaSpain2026-06-12Truhlar And Truhlar Attys RENEWAL3Stephen Shaw
1048Ricardo GauchoItaly2026-05-30Rousseaux, Michael Esq UNQUALIFIED86Elwin Sharvill
1049Wickens NestleItaly2026-05-27Chemel, James L Cpa PROPOSAL9Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Nicolas IturbideRussiaAmy Elsner NEW
Maisha RulapaughSpainBernardo Dominic QUALIFIED
Alejandro PerinAustraliaOnyama Limba RENEWAL
Julie StensethJapanAmy Elsner UNQUALIFIED
Julie StensethCanadaAnna Fali QUALIFIED
Clifford RimGermanyIoni Bowcher NEW
Wickens NestleCanadaElwin Sharvill NEGOTIATION
Alejandro PerinItalyStephen Shaw UNQUALIFIED
Octavia MaletItalyBernardo Dominic UNQUALIFIED
Maria MarrierBrazilElwin Sharvill PROPOSAL
Antonio CaudyBrazilElwin Sharvill QUALIFIED
Kaitlin OstroskyFranceStephen Shaw QUALIFIED
Claire TollnerArgentinaIvan Magalhaes PROPOSAL
Maria MarrierSpainBernardo Dominic RENEWAL
Claire TollnerBrazilBernardo Dominic UNQUALIFIED
Silvio SlusarskiUnited KingdomAsiya Javayant NEW
Chavez BriddickIndiaIoni Bowcher RENEWAL
James ButtGermanyXuxue Feng PROPOSAL
Munro FerenczSpainBernardo Dominic UNQUALIFIED
Francesco ShinkoGermanyAnna Fali UNQUALIFIED
Jefferson SchemmerCanadaAmy Elsner NEGOTIATION
Aditya KuskoRussiaOnyama Limba UNQUALIFIED
Wickens NestleArgentinaElwin Sharvill UNQUALIFIED
Ivar PaprockiIndiaAnna Fali PROPOSAL
Tony FollerArgentinaAnna Fali QUALIFIED
Julie StensethIndiaAnna Fali UNQUALIFIED
Clifford RimUnited KingdomStephen Shaw UNQUALIFIED
Stacey MacleadItalyXuxue Feng PROPOSAL
Alejandro PerinAustraliaAmy Elsner RENEWAL
Leja CaldareraRussiaAmy Elsner QUALIFIED
Chavez BriddickUnited KingdomBernardo Dominic NEGOTIATION
Stacey MacleadIndiaElwin Sharvill QUALIFIED
Julie StensethIndiaXuxue Feng PROPOSAL
Mayumi KolmetzArgentinaStephen Shaw RENEWAL
Ivar PaprockiRussiaIvan Magalhaes PROPOSAL
Chavez BriddickJapanBernardo Dominic NEGOTIATION
Francesco ShinkoIndiaStephen Shaw NEGOTIATION
Alejandro PerinBrazilBernardo Dominic UNQUALIFIED
Emily WhobreyArgentinaOnyama Limba UNQUALIFIED
Munro FerenczSpainIoni Bowcher UNQUALIFIED
Faith GillianGermanyAnna Fali QUALIFIED
Misaki RoysterUnited KingdomOnyama Limba RENEWAL
David DarakjyBrazilAnna Fali NEGOTIATION
Morrow RutaArgentinaAmy Elsner NEGOTIATION
James ButtGermanyBernardo Dominic UNQUALIFIED
Cody SaylorsArgentinaOnyama Limba QUALIFIED
Juan WieserCanadaAnna Fali QUALIFIED
Clifford RimGermanyAnna Fali NEW
Kadeem FlosiFranceStephen Shaw NEGOTIATION
Claire TollnerIndiaIoni Bowcher NEGOTIATION
Frozen Columns
Name
Octavia Malet
Jefferson Schemmer
Aruna Figeroa
Deepesh Chui
Munro Ferencz
Aditya Kusko
Wickens Nestle
Antonio Caudy
David Darakjy
Stacey Maclead
Jones Vocelka
Nicolas Iturbide
Aditya Kusko
Mayumi Kolmetz
Arvin Albares
Smith Glick
Munro Ferencz
James Butt
Adams Morasca
Kaitlin Ostrosky
Mujtaba Nicka
Murillo Malet
Ashley Doe
Aika Inouye
Salvatore Stockham
Octavia Malet
Leja Caldarera
Salvatore Stockham
Leon Oldroyd
Julie Stenseth
Mujtaba Nicka
Smith Glick
Jefferson Schemmer
Tony Foller
Nicolas Iturbide
Nicolas Iturbide
Adams Morasca
Stacey Maclead
Murillo Malet
Jeanfrancois Venere
Isabel Bowley
Deepesh Chui
Faith Gillian
Maria Marrier
James Butt
Stacey Maclead
Aruna Figeroa
Ashley Doe
Maria Marrier
Salvatore Stockham
IdCountryDate
1000France2026-05-26
1001Argentina2026-05-26
1002Argentina2026-06-09
1003France2026-05-30
1004Italy2026-06-14
1005United Kingdom2026-06-16
1006France2026-06-15
1007Argentina2026-06-07
1008Russia2026-06-11
1009Argentina2026-06-18
1010Germany2026-06-07
1011France2026-05-28
1012United Kingdom2026-06-04
1013Italy2026-05-25
1014Spain2026-06-11
1015India2026-05-23
1016Russia2026-06-13
1017Argentina2026-05-31
1018Spain2026-06-07
1019France2026-05-24
1020Germany2026-05-25
1021Italy2026-06-18
1022Italy2026-06-06
1023United Kingdom2026-05-24
1024Argentina2026-06-14
1025India2026-06-14
1026Australia2026-06-14
1027United Kingdom2026-05-30
1028Italy2026-06-12
1029Italy2026-05-31
1030Brazil2026-06-15
1031Russia2026-05-24
1032India2026-06-09
1033Spain2026-06-01
1034Canada2026-06-03
1035India2026-05-23
1036United Kingdom2026-06-08
1037Japan2026-05-27
1038Japan2026-06-19
1039Spain2026-05-23
1040Russia2026-06-10
1041United Kingdom2026-05-27
1042United Kingdom2026-05-22
1043Russia2026-06-17
1044Brazil2026-06-07
1045Australia2026-05-28
1046Japan2026-06-19
1047Australia2026-05-22
1048Argentina2026-05-26
1049Italy2026-06-02

On-Demand Data

NameIdCountryDate
Ashley Doe1000Canada2026-06-02
Aika Inouye1001Italy2026-06-05
Morrow Ruta1002Germany2026-06-07
Kadeem Flosi1003United Kingdom2026-05-28
Aruna Figeroa1004Italy2026-06-17
Stacey Maclead1005Spain2026-06-20
Silvio Slusarski1006France2026-05-22
Leon Oldroyd1007Canada2026-06-16
Cody Saylors1008Germany2026-06-07
James Butt1009Germany2026-06-02
Arvin Albares1010India2026-06-08
Chavez Briddick1011Spain2026-05-26
Cody Saylors1012Canada2026-06-19
Darci Poquette1013Canada2026-06-04
Isabel Bowley1014Russia2026-05-26
Jones Vocelka1015Italy2026-06-01
Aika Inouye1016Canada2026-05-22
Juan Wieser1017Canada2026-06-13
Aditya Kusko1018Italy2026-05-30
Murillo Malet1019Brazil2026-06-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Aditya KuskoBrazilXuxue Feng NEW
Sinclair WaycottRussiaXuxue Feng UNQUALIFIED
Octavia MaletGermanyIvan Magalhaes NEGOTIATION
Tony FollerFranceAnna Fali NEGOTIATION
Jennifer AmigonAustraliaIvan Magalhaes PROPOSAL
Juan WieserArgentinaIvan Magalhaes UNQUALIFIED
Jefferson SchemmerBrazilIvan Magalhaes NEGOTIATION
Jennifer AmigonItalyAmy Elsner QUALIFIED
Aditya KuskoSpainXuxue Feng QUALIFIED
Chavez BriddickFranceAnna Fali PROPOSAL
Aruna FigeroaGermanyOnyama Limba NEW
Maria MarrierItalyAsiya Javayant UNQUALIFIED
Faith GillianCanadaBernardo Dominic NEW
Nicolas IturbideJapanXuxue Feng PROPOSAL
Costa DilliardAustraliaStephen Shaw NEGOTIATION
Francesco ShinkoArgentinaAsiya Javayant PROPOSAL
Izzy GarufiGermanyStephen Shaw QUALIFIED
Francesco ShinkoCanadaIvan Magalhaes PROPOSAL
Alejandro PerinRussiaBernardo Dominic QUALIFIED
Aditya KuskoAustraliaIvan Magalhaes NEGOTIATION
Chavez BriddickGermanyXuxue Feng PROPOSAL
Maria MarrierItalyStephen Shaw RENEWAL
Chavez BriddickArgentinaAmy Elsner NEGOTIATION
Rodrigues CampainItalyIoni Bowcher QUALIFIED
Juan WieserIndiaIoni Bowcher UNQUALIFIED
Clifford RimGermanyAmy Elsner RENEWAL
Greenwood BologniaFranceAmy Elsner NEGOTIATION
Leja CaldareraRussiaBernardo Dominic QUALIFIED
Isabel BowleyUnited KingdomXuxue Feng UNQUALIFIED
Maisha RulapaughRussiaStephen Shaw PROPOSAL
Kadeem FlosiIndiaAmy Elsner PROPOSAL
Emily WhobreyCanadaIoni Bowcher QUALIFIED
Rodrigues CampainIndiaAnna Fali UNQUALIFIED
Aditya KuskoArgentinaAsiya Javayant NEGOTIATION
David DarakjyGermanyElwin Sharvill PROPOSAL
Johnson SergiArgentinaAmy Elsner UNQUALIFIED
Munro FerenczSpainAsiya Javayant RENEWAL
David DarakjyIndiaIvan Magalhaes RENEWAL
Emily WhobreyCanadaAsiya Javayant PROPOSAL
James ButtGermanyAsiya Javayant PROPOSAL

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