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
Smith GlickUnited KingdomElwin Sharvill PROPOSAL
Mujtaba NickaItalyXuxue Feng QUALIFIED
Isabel BowleyCanadaAnna Fali UNQUALIFIED
Deepesh ChuiArgentinaElwin Sharvill NEGOTIATION
Mujtaba NickaFranceIoni Bowcher QUALIFIED
Costa DilliardJapanStephen Shaw PROPOSAL
Julie StensethJapanIoni Bowcher PROPOSAL
Jennifer AmigonArgentinaAmy Elsner NEW
Kaitlin OstroskyArgentinaBernardo Dominic NEGOTIATION
Greenwood BologniaCanadaXuxue Feng QUALIFIED
Murillo MaletBrazilIvan Magalhaes QUALIFIED
Aditya KuskoSpainOnyama Limba QUALIFIED
Ivar PaprockiAustraliaAmy Elsner NEGOTIATION
Jones VocelkaSpainXuxue Feng NEW
Jones VocelkaSpainOnyama Limba NEW
Izzy GarufiRussiaOnyama Limba UNQUALIFIED
Johnson SergiFranceXuxue Feng PROPOSAL
Jones VocelkaFranceStephen Shaw NEW
Rodrigues CampainCanadaIvan Magalhaes UNQUALIFIED
Aditya KuskoAustraliaAnna Fali NEW
Johnson SergiItalyIoni Bowcher UNQUALIFIED
Silvio SlusarskiArgentinaStephen Shaw NEGOTIATION
Misaki RoysterSpainXuxue Feng NEGOTIATION
Jeanfrancois VenereUnited KingdomIvan Magalhaes RENEWAL
Isabel BowleyFranceAnna Fali UNQUALIFIED
Silvio SlusarskiAustraliaElwin Sharvill PROPOSAL
Nicolas IturbideArgentinaStephen Shaw PROPOSAL
Faith GillianFranceAsiya Javayant PROPOSAL
Aika InouyeGermanyElwin Sharvill NEGOTIATION
Wickens NestleUnited KingdomElwin Sharvill PROPOSAL
Isabel BowleyBrazilAnna Fali RENEWAL
Costa DilliardUnited KingdomOnyama Limba NEGOTIATION
Faith GillianAustraliaBernardo Dominic RENEWAL
Munro FerenczCanadaXuxue Feng UNQUALIFIED
Jones VocelkaUnited KingdomXuxue Feng RENEWAL
Sinclair WaycottArgentinaAnna Fali PROPOSAL
Misaki RoysterIndiaElwin Sharvill NEGOTIATION
Smith GlickSpainBernardo Dominic NEW
Stacey MacleadCanadaBernardo Dominic UNQUALIFIED
Munro FerenczAustraliaIoni Bowcher PROPOSAL
Tony FollerItalyElwin Sharvill RENEWAL
Kadeem FlosiJapanBernardo Dominic UNQUALIFIED
Mayumi KolmetzFranceElwin Sharvill UNQUALIFIED
Johnson SergiCanadaStephen Shaw QUALIFIED
Misaki RoysterRussiaElwin Sharvill UNQUALIFIED
Murillo MaletBrazilAmy Elsner NEGOTIATION
Jones VocelkaSpainElwin Sharvill QUALIFIED
Alejandro PerinGermanyOnyama Limba NEW
Arvin AlbaresSpainAnna Fali QUALIFIED
Morrow RutaItalyOnyama Limba RENEWAL
Horizontal
NameCountryRepresentativeStatus
Morrow RutaAustraliaIvan Magalhaes RENEWAL
Murillo MaletJapanElwin Sharvill QUALIFIED
Isabel BowleyCanadaIvan Magalhaes UNQUALIFIED
Costa DilliardAustraliaIvan Magalhaes RENEWAL
Stacey MacleadIndiaAnna Fali PROPOSAL
Darci PoquetteArgentinaAsiya Javayant NEW
Nicolas IturbideIndiaIoni Bowcher QUALIFIED
Jeanfrancois VenereJapanElwin Sharvill NEW
Claire TollnerCanadaXuxue Feng UNQUALIFIED
Aika InouyeCanadaAmy Elsner PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Costa DilliardCanada2026-06-04Truhlar And Truhlar Attys RENEWAL40Onyama Limba
1001Juan WieserArgentina2026-05-18Rousseaux, Michael Esq NEW64Ivan Magalhaes
1002Munro FerenczRussia2026-05-26Feltz Printing Service PROPOSAL86Onyama Limba
1003Maria MarrierUnited Kingdom2026-05-21King, Christopher A Esq PROPOSAL93Amy Elsner
1004Salvatore StockhamUnited Kingdom2026-05-26Rousseaux, Michael Esq PROPOSAL40Asiya Javayant
1005Arvin AlbaresGermany2026-05-14Rangoni Of Florence NEW20Amy Elsner
1006Claire TollnerSpain2026-06-09Dorl, James J Esq UNQUALIFIED75Anna Fali
1007Isabel BowleySpain2026-05-14Rousseaux, Michael Esq PROPOSAL0Xuxue Feng
1008Kadeem FlosiJapan2026-06-06Feltz Printing Service UNQUALIFIED59Xuxue Feng
1009Ashley DoeFrance2026-05-16Benton, John B Jr QUALIFIED15Ioni Bowcher
1010Juan WieserAustralia2026-05-24Buckley Miller Wright QUALIFIED27Stephen Shaw
1011Kadeem FlosiArgentina2026-05-12Chapman, Ross E Esq QUALIFIED24Stephen Shaw
1012Leja CaldareraRussia2026-06-04Feltz Printing Service NEGOTIATION82Amy Elsner
1013Rodrigues CampainFrance2026-06-03Chapman, Ross E Esq NEW40Bernardo Dominic
1014Cody SaylorsIndia2026-06-05Printing Dimensions UNQUALIFIED66Amy Elsner
1015Sinclair WaycottIndia2026-05-27Rangoni Of Florence UNQUALIFIED6Anna Fali
1016Jeanfrancois VenereCanada2026-05-26Feltz Printing Service QUALIFIED78Xuxue Feng
1017Maria MarrierItaly2026-05-29Chemel, James L Cpa UNQUALIFIED87Stephen Shaw
1018Octavia MaletArgentina2026-05-14Dorl, James J Esq PROPOSAL71Bernardo Dominic
1019Alejandro PerinBrazil2026-05-29Morlong Associates PROPOSAL16Amy Elsner
1020Alejandro PerinItaly2026-06-08Rangoni Of Florence RENEWAL72Bernardo Dominic
1021Francesco ShinkoSpain2026-06-07Morlong Associates NEGOTIATION80Elwin Sharvill
1022Aruna FigeroaCanada2026-05-30Printing Dimensions RENEWAL42Ivan Magalhaes
1023Juan WieserJapan2026-05-29Rangoni Of Florence RENEWAL56Xuxue Feng
1024Rodrigues CampainFrance2026-06-08Feltz Printing Service NEW56Ioni Bowcher
1025Morrow RutaRussia2026-05-26Morlong Associates NEGOTIATION79Ivan Magalhaes
1026Darci PoquetteJapan2026-05-20Buckley Miller Wright RENEWAL63Bernardo Dominic
1027Antonio CaudyItaly2026-05-22Feltz Printing Service QUALIFIED37Amy Elsner
1028Wickens NestleItaly2026-05-19Rangoni Of Florence NEGOTIATION44Bernardo Dominic
1029Francesco ShinkoFrance2026-05-23Morlong Associates NEGOTIATION20Onyama Limba
1030Arvin AlbaresItaly2026-05-25Dorl, James J Esq QUALIFIED32Ivan Magalhaes
1031Nicolas IturbideCanada2026-05-27Morlong Associates UNQUALIFIED43Asiya Javayant
1032Morrow RutaBrazil2026-05-20Morlong Associates NEGOTIATION61Asiya Javayant
1033Sinclair WaycottBrazil2026-05-14Buckley Miller Wright QUALIFIED96Stephen Shaw
1034Faith GillianItaly2026-06-06Commercial Press UNQUALIFIED47Asiya Javayant
1035Sinclair WaycottIndia2026-05-17Rousseaux, Michael Esq NEW72Bernardo Dominic
1036Clifford RimJapan2026-06-06Printing Dimensions RENEWAL65Ivan Magalhaes
1037Clifford RimRussia2026-05-18Chanay, Jeffrey A Esq UNQUALIFIED78Stephen Shaw
1038Deepesh ChuiGermany2026-05-20Chanay, Jeffrey A Esq QUALIFIED31Onyama Limba
1039Juan WieserJapan2026-06-07Rousseaux, Michael Esq UNQUALIFIED31Xuxue Feng
1040Clifford RimFrance2026-05-27Commercial Press RENEWAL30Ivan Magalhaes
1041Julie StensethItaly2026-05-27Dorl, James J Esq NEGOTIATION98Amy Elsner
1042Julie StensethAustralia2026-05-16Rousseaux, Michael Esq QUALIFIED43Stephen Shaw
1043Maria MarrierFrance2026-05-22Truhlar And Truhlar Attys RENEWAL20Onyama Limba
1044Sinclair WaycottGermany2026-05-13Chapman, Ross E Esq NEGOTIATION29Onyama Limba
1045Arvin AlbaresArgentina2026-05-22Morlong Associates NEW16Asiya Javayant
1046Jeanfrancois VenereUnited Kingdom2026-06-09Chanay, Jeffrey A Esq PROPOSAL69Xuxue Feng
1047Octavia MaletSpain2026-05-31Chapman, Ross E Esq UNQUALIFIED33Amy Elsner
1048Kadeem FlosiGermany2026-06-07Printing Dimensions UNQUALIFIED1Anna Fali
1049James ButtIndia2026-05-15Rangoni Of Florence UNQUALIFIED61Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Misaki RoysterGermanyStephen Shaw NEW
Deepesh ChuiSpainAnna Fali QUALIFIED
Claire TollnerFranceBernardo Dominic QUALIFIED
Maria MarrierItalyStephen Shaw NEW
Costa DilliardRussiaBernardo Dominic QUALIFIED
Johnson SergiGermanyElwin Sharvill QUALIFIED
Rodrigues CampainFranceOnyama Limba PROPOSAL
Wickens NestleJapanOnyama Limba PROPOSAL
Leja CaldareraUnited KingdomAmy Elsner UNQUALIFIED
Arvin AlbaresBrazilXuxue Feng NEGOTIATION
Faith GillianIndiaBernardo Dominic UNQUALIFIED
Faith GillianIndiaAsiya Javayant QUALIFIED
Faith GillianArgentinaAsiya Javayant QUALIFIED
Aika InouyeRussiaIvan Magalhaes UNQUALIFIED
Greenwood BologniaItalyIoni Bowcher UNQUALIFIED
Juan WieserIndiaElwin Sharvill RENEWAL
Jeanfrancois VenereGermanyAnna Fali RENEWAL
Izzy GarufiAustraliaIvan Magalhaes QUALIFIED
Izzy GarufiFranceElwin Sharvill NEGOTIATION
Emily WhobreyArgentinaXuxue Feng PROPOSAL
Stacey MacleadFranceXuxue Feng QUALIFIED
Leja CaldareraArgentinaXuxue Feng QUALIFIED
Ricardo GauchoItalyElwin Sharvill RENEWAL
Murillo MaletGermanyOnyama Limba QUALIFIED
Jefferson SchemmerRussiaBernardo Dominic RENEWAL
Faith GillianAustraliaElwin Sharvill UNQUALIFIED
Wickens NestleGermanyAsiya Javayant QUALIFIED
Aditya KuskoIndiaXuxue Feng RENEWAL
Cody SaylorsSpainElwin Sharvill UNQUALIFIED
Silvio SlusarskiFranceElwin Sharvill RENEWAL
Adams MorascaArgentinaIoni Bowcher UNQUALIFIED
Jones VocelkaItalyElwin Sharvill PROPOSAL
Deepesh ChuiRussiaElwin Sharvill UNQUALIFIED
Tony FollerRussiaIoni Bowcher RENEWAL
Jones VocelkaGermanyElwin Sharvill QUALIFIED
Murillo MaletFranceIvan Magalhaes NEW
Murillo MaletGermanyXuxue Feng QUALIFIED
Aditya KuskoFranceIoni Bowcher PROPOSAL
Murillo MaletIndiaAnna Fali NEGOTIATION
Jennifer AmigonItalyXuxue Feng QUALIFIED
Wickens NestleIndiaAmy Elsner UNQUALIFIED
Chavez BriddickGermanyIvan Magalhaes NEGOTIATION
Deepesh ChuiItalyElwin Sharvill NEGOTIATION
Chavez BriddickJapanOnyama Limba QUALIFIED
Kadeem FlosiSpainXuxue Feng QUALIFIED
Johnson SergiUnited KingdomElwin Sharvill QUALIFIED
Julie StensethFranceElwin Sharvill RENEWAL
Salvatore StockhamFranceOnyama Limba QUALIFIED
Costa DilliardSpainOnyama Limba NEW
Ivar PaprockiJapanElwin Sharvill NEGOTIATION
Frozen Columns
Name
Stacey Maclead
Rodrigues Campain
Stacey Maclead
Silvio Slusarski
Mayumi Kolmetz
Ashley Doe
Aika Inouye
Tony Foller
Murillo Malet
Nicolas Iturbide
Juan Wieser
Mujtaba Nicka
Ivar Paprocki
Leja Caldarera
Mayumi Kolmetz
Stacey Maclead
Ivar Paprocki
Rodrigues Campain
Mujtaba Nicka
Claire Tollner
Alejandro Perin
Silvio Slusarski
Stacey Maclead
Izzy Garufi
Deepesh Chui
Morrow Ruta
Murillo Malet
Leja Caldarera
Smith Glick
Leja Caldarera
Juan Wieser
Maisha Rulapaugh
Silvio Slusarski
Smith Glick
Smith Glick
Murillo Malet
Silvio Slusarski
James Butt
Greenwood Bolognia
Aditya Kusko
Adams Morasca
Claire Tollner
Leja Caldarera
Murillo Malet
Faith Gillian
Aruna Figeroa
Tony Foller
Maria Marrier
Stacey Maclead
Aika Inouye
IdCountryDate
1000Argentina2026-05-17
1001France2026-06-10
1002Australia2026-06-02
1003Canada2026-05-17
1004Italy2026-05-26
1005Spain2026-06-01
1006Brazil2026-05-21
1007Russia2026-05-20
1008France2026-05-24
1009Argentina2026-05-14
1010India2026-06-08
1011Australia2026-06-09
1012Argentina2026-05-29
1013Australia2026-05-26
1014Brazil2026-05-14
1015Russia2026-05-14
1016Canada2026-05-30
1017Germany2026-05-20
1018Canada2026-06-08
1019Canada2026-05-19
1020Russia2026-05-15
1021Japan2026-05-26
1022India2026-05-21
1023India2026-05-26
1024Russia2026-05-27
1025Australia2026-06-07
1026Australia2026-05-27
1027Argentina2026-06-10
1028Spain2026-05-15
1029Spain2026-05-22
1030Argentina2026-05-29
1031Argentina2026-05-26
1032France2026-05-30
1033Germany2026-05-21
1034Italy2026-05-25
1035India2026-05-23
1036Italy2026-05-24
1037Australia2026-05-13
1038Germany2026-06-08
1039France2026-05-25
1040India2026-06-03
1041Japan2026-05-23
1042Australia2026-05-22
1043Japan2026-05-22
1044Brazil2026-05-21
1045Argentina2026-05-25
1046Spain2026-06-08
1047Brazil2026-05-12
1048Argentina2026-05-22
1049United Kingdom2026-06-10

On-Demand Data

NameIdCountryDate
Nicolas Iturbide1000Brazil2026-06-03
Clifford Rim1001Russia2026-05-21
Johnson Sergi1002United Kingdom2026-05-13
Misaki Royster1003Japan2026-06-08
Leon Oldroyd1004Germany2026-06-10
Jones Vocelka1005India2026-05-30
Stacey Maclead1006Spain2026-06-08
Murillo Malet1007Australia2026-05-27
Cody Saylors1008United Kingdom2026-05-25
Cody Saylors1009Spain2026-06-06
Kadeem Flosi1010United Kingdom2026-06-03
Arvin Albares1011Russia2026-05-23
Deepesh Chui1012Italy2026-05-13
Kadeem Flosi1013Germany2026-05-26
Costa Dilliard1014Italy2026-05-23
Darci Poquette1015United Kingdom2026-05-15
Kadeem Flosi1016Italy2026-06-03
Kaitlin Ostrosky1017Argentina2026-06-01
Faith Gillian1018France2026-05-29
Mujtaba Nicka1019India2026-06-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Sinclair WaycottRussiaAsiya Javayant QUALIFIED
Octavia MaletAustraliaXuxue Feng NEGOTIATION
Arvin AlbaresBrazilOnyama Limba RENEWAL
Adams MorascaUnited KingdomAnna Fali UNQUALIFIED
Murillo MaletJapanAnna Fali PROPOSAL
Costa DilliardAustraliaAsiya Javayant UNQUALIFIED
Leja CaldareraFranceBernardo Dominic NEW
Jefferson SchemmerBrazilAnna Fali NEW
Maisha RulapaughRussiaBernardo Dominic NEW
Maisha RulapaughJapanStephen Shaw RENEWAL
Leja CaldareraUnited KingdomElwin Sharvill QUALIFIED
Salvatore StockhamSpainBernardo Dominic QUALIFIED
Isabel BowleyArgentinaElwin Sharvill NEGOTIATION
Aruna FigeroaItalyStephen Shaw NEGOTIATION
Kadeem FlosiCanadaOnyama Limba UNQUALIFIED
Izzy GarufiArgentinaIvan Magalhaes UNQUALIFIED
Octavia MaletUnited KingdomIvan Magalhaes RENEWAL
Adams MorascaSpainXuxue Feng QUALIFIED
Julie StensethItalyAmy Elsner NEW
Morrow RutaArgentinaAsiya Javayant NEW
Cody SaylorsBrazilStephen Shaw NEGOTIATION
Morrow RutaFranceStephen Shaw UNQUALIFIED
Adams MorascaAustraliaAnna Fali NEW
David DarakjyAustraliaStephen Shaw NEGOTIATION
Arvin AlbaresArgentinaAnna Fali PROPOSAL
Jefferson SchemmerCanadaBernardo Dominic RENEWAL
Wickens NestleCanadaAsiya Javayant QUALIFIED
Maisha RulapaughBrazilAnna Fali NEGOTIATION
Jones VocelkaUnited KingdomElwin Sharvill NEW
Octavia MaletSpainBernardo Dominic PROPOSAL
Nicolas IturbideFranceStephen Shaw NEW
Izzy GarufiIndiaBernardo Dominic QUALIFIED
Stacey MacleadBrazilStephen Shaw PROPOSAL
Aika InouyeGermanyAnna Fali UNQUALIFIED
Jefferson SchemmerJapanIoni Bowcher QUALIFIED
Murillo MaletIndiaStephen Shaw PROPOSAL
Johnson SergiIndiaBernardo Dominic RENEWAL
Salvatore StockhamIndiaAsiya Javayant PROPOSAL
Faith GillianCanadaIoni Bowcher PROPOSAL
Juan WieserCanadaElwin Sharvill 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>