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
Greenwood BologniaFranceIoni Bowcher RENEWAL
Emily WhobreyAustraliaAmy Elsner PROPOSAL
Deepesh ChuiArgentinaBernardo Dominic PROPOSAL
Maisha RulapaughCanadaAmy Elsner NEGOTIATION
Ashley DoeItalyXuxue Feng PROPOSAL
Tony FollerArgentinaOnyama Limba QUALIFIED
Johnson SergiUnited KingdomXuxue Feng RENEWAL
Costa DilliardAustraliaIvan Magalhaes UNQUALIFIED
Ashley DoeUnited KingdomElwin Sharvill QUALIFIED
Octavia MaletRussiaIoni Bowcher QUALIFIED
Julie StensethBrazilAnna Fali UNQUALIFIED
Ivar PaprockiSpainAnna Fali QUALIFIED
Ricardo GauchoJapanIvan Magalhaes UNQUALIFIED
David DarakjyJapanOnyama Limba PROPOSAL
Wickens NestleAustraliaAnna Fali PROPOSAL
Francesco ShinkoAustraliaAsiya Javayant NEGOTIATION
Claire TollnerFranceAnna Fali QUALIFIED
Johnson SergiIndiaAsiya Javayant UNQUALIFIED
Nicolas IturbideRussiaAmy Elsner NEW
Wickens NestleIndiaBernardo Dominic NEW
Jefferson SchemmerAustraliaIvan Magalhaes NEW
Kadeem FlosiGermanyStephen Shaw PROPOSAL
Ashley DoeGermanyAnna Fali NEGOTIATION
Tony FollerGermanyElwin Sharvill UNQUALIFIED
Murillo MaletFranceIvan Magalhaes QUALIFIED
Jones VocelkaSpainElwin Sharvill QUALIFIED
Chavez BriddickGermanyIoni Bowcher RENEWAL
Nicolas IturbideRussiaAmy Elsner RENEWAL
Mujtaba NickaGermanyAmy Elsner UNQUALIFIED
Misaki RoysterFranceXuxue Feng QUALIFIED
Isabel BowleyJapanXuxue Feng RENEWAL
Ricardo GauchoAustraliaAmy Elsner UNQUALIFIED
Arvin AlbaresJapanAnna Fali QUALIFIED
Alejandro PerinUnited KingdomElwin Sharvill NEGOTIATION
Sinclair WaycottGermanyAsiya Javayant RENEWAL
Johnson SergiCanadaAsiya Javayant UNQUALIFIED
Kaitlin OstroskyAustraliaIvan Magalhaes UNQUALIFIED
Costa DilliardGermanyAsiya Javayant NEGOTIATION
David DarakjyFranceStephen Shaw QUALIFIED
Deepesh ChuiIndiaElwin Sharvill NEGOTIATION
Jennifer AmigonAustraliaOnyama Limba UNQUALIFIED
David DarakjyBrazilStephen Shaw PROPOSAL
Faith GillianAustraliaOnyama Limba RENEWAL
Murillo MaletUnited KingdomAnna Fali NEW
Chavez BriddickIndiaAmy Elsner PROPOSAL
Greenwood BologniaBrazilAmy Elsner PROPOSAL
Maria MarrierItalyAnna Fali RENEWAL
Johnson SergiItalyAsiya Javayant PROPOSAL
David DarakjyItalyIoni Bowcher NEW
Greenwood BologniaRussiaAsiya Javayant PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Darci PoquetteFranceBernardo Dominic QUALIFIED
Emily WhobreyArgentinaElwin Sharvill QUALIFIED
Octavia MaletUnited KingdomXuxue Feng RENEWAL
Deepesh ChuiGermanyAsiya Javayant UNQUALIFIED
Deepesh ChuiItalyIvan Magalhaes NEGOTIATION
Aika InouyeGermanyElwin Sharvill PROPOSAL
Deepesh ChuiJapanIoni Bowcher RENEWAL
Cody SaylorsFranceAnna Fali QUALIFIED
Misaki RoysterBrazilStephen Shaw RENEWAL
Smith GlickGermanyStephen Shaw UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ivar PaprockiRussia2026-05-14Chapman, Ross E Esq RENEWAL6Elwin Sharvill
1001Wickens NestleUnited Kingdom2026-05-27Feltz Printing Service NEW57Bernardo Dominic
1002Darci PoquetteBrazil2026-05-31Chapman, Ross E Esq QUALIFIED15Ioni Bowcher
1003Aika InouyeIndia2026-06-04Dorl, James J Esq PROPOSAL16Anna Fali
1004Jeanfrancois VenereFrance2026-06-05Morlong Associates UNQUALIFIED21Ioni Bowcher
1005Leja CaldareraBrazil2026-06-04Chapman, Ross E Esq QUALIFIED83Bernardo Dominic
1006Ivar PaprockiRussia2026-05-16Chemel, James L Cpa NEGOTIATION1Ivan Magalhaes
1007Faith GillianGermany2026-06-05Rangoni Of Florence PROPOSAL15Asiya Javayant
1008Chavez BriddickItaly2026-05-29Truhlar And Truhlar Attys QUALIFIED33Ivan Magalhaes
1009Aditya KuskoItaly2026-06-08King, Christopher A Esq NEW76Stephen Shaw
1010Johnson SergiUnited Kingdom2026-06-02Feiner Bros QUALIFIED5Amy Elsner
1011Leon OldroydItaly2026-05-25Chanay, Jeffrey A Esq UNQUALIFIED48Bernardo Dominic
1012Silvio SlusarskiCanada2026-05-20Printing Dimensions UNQUALIFIED8Asiya Javayant
1013James ButtArgentina2026-05-20Chanay, Jeffrey A Esq NEW57Bernardo Dominic
1014Julie StensethRussia2026-06-05Chemel, James L Cpa PROPOSAL82Bernardo Dominic
1015Maisha RulapaughRussia2026-05-15Buckley Miller Wright UNQUALIFIED26Xuxue Feng
1016Clifford RimCanada2026-05-25Printing Dimensions NEGOTIATION2Elwin Sharvill
1017Darci PoquetteIndia2026-06-09Truhlar And Truhlar Attys QUALIFIED80Ivan Magalhaes
1018Julie StensethAustralia2026-06-04Truhlar And Truhlar Attys UNQUALIFIED94Ivan Magalhaes
1019Cody SaylorsUnited Kingdom2026-05-31Feiner Bros UNQUALIFIED39Xuxue Feng
1020Sinclair WaycottRussia2026-06-02Rousseaux, Michael Esq NEGOTIATION10Xuxue Feng
1021Isabel BowleyRussia2026-05-30Morlong Associates UNQUALIFIED78Ioni Bowcher
1022Maria MarrierSpain2026-05-22King, Christopher A Esq NEGOTIATION31Asiya Javayant
1023Greenwood BologniaCanada2026-05-17Printing Dimensions UNQUALIFIED56Ivan Magalhaes
1024Claire TollnerJapan2026-05-12Dorl, James J Esq QUALIFIED97Bernardo Dominic
1025Rodrigues CampainAustralia2026-05-23Benton, John B Jr UNQUALIFIED3Elwin Sharvill
1026Clifford RimIndia2026-06-04Printing Dimensions PROPOSAL68Amy Elsner
1027Tony FollerIndia2026-06-09Morlong Associates NEGOTIATION79Stephen Shaw
1028Antonio CaudyUnited Kingdom2026-05-31Truhlar And Truhlar Attys QUALIFIED89Ioni Bowcher
1029Antonio CaudyRussia2026-06-03Rangoni Of Florence NEGOTIATION48Stephen Shaw
1030Jennifer AmigonAustralia2026-05-17Feiner Bros QUALIFIED57Onyama Limba
1031Cody SaylorsAustralia2026-05-23Chapman, Ross E Esq RENEWAL31Asiya Javayant
1032Clifford RimSpain2026-06-09Rangoni Of Florence NEW51Anna Fali
1033Morrow RutaItaly2026-06-09Chapman, Ross E Esq PROPOSAL56Stephen Shaw
1034Nicolas IturbideArgentina2026-05-19King, Christopher A Esq NEW10Xuxue Feng
1035Johnson SergiCanada2026-06-04Chemel, James L Cpa RENEWAL91Ivan Magalhaes
1036Silvio SlusarskiGermany2026-05-18Commercial Press PROPOSAL78Elwin Sharvill
1037Ricardo GauchoArgentina2026-05-27Feltz Printing Service NEW63Elwin Sharvill
1038Greenwood BologniaAustralia2026-06-09Dorl, James J Esq NEW84Elwin Sharvill
1039Nicolas IturbideUnited Kingdom2026-05-17Benton, John B Jr UNQUALIFIED93Bernardo Dominic
1040Johnson SergiArgentina2026-05-30Printing Dimensions NEW10Ivan Magalhaes
1041Izzy GarufiRussia2026-06-06Buckley Miller Wright UNQUALIFIED4Anna Fali
1042Jefferson SchemmerBrazil2026-06-01Chapman, Ross E Esq QUALIFIED84Xuxue Feng
1043Silvio SlusarskiJapan2026-05-22Benton, John B Jr QUALIFIED35Anna Fali
1044Ivar PaprockiArgentina2026-05-18Truhlar And Truhlar Attys NEW84Xuxue Feng
1045David DarakjyJapan2026-05-13Commercial Press RENEWAL6Anna Fali
1046Wickens NestleAustralia2026-05-20Printing Dimensions UNQUALIFIED5Amy Elsner
1047Mujtaba NickaCanada2026-05-28Truhlar And Truhlar Attys QUALIFIED29Elwin Sharvill
1048Aruna FigeroaFrance2026-06-05Truhlar And Truhlar Attys RENEWAL32Anna Fali
1049Misaki RoysterSpain2026-06-03Chapman, Ross E Esq UNQUALIFIED50Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Sinclair WaycottGermanyStephen Shaw UNQUALIFIED
Leja CaldareraItalyOnyama Limba NEGOTIATION
Chavez BriddickSpainStephen Shaw UNQUALIFIED
Aruna FigeroaArgentinaOnyama Limba NEGOTIATION
Sinclair WaycottUnited KingdomBernardo Dominic PROPOSAL
Leja CaldareraCanadaXuxue Feng QUALIFIED
Aika InouyeJapanOnyama Limba RENEWAL
Adams MorascaCanadaElwin Sharvill RENEWAL
Maisha RulapaughUnited KingdomIvan Magalhaes QUALIFIED
Greenwood BologniaRussiaIoni Bowcher QUALIFIED
Chavez BriddickAustraliaOnyama Limba NEGOTIATION
Kadeem FlosiItalyAsiya Javayant QUALIFIED
Wickens NestleBrazilBernardo Dominic NEW
Leja CaldareraCanadaElwin Sharvill PROPOSAL
Maria MarrierUnited KingdomAmy Elsner QUALIFIED
Morrow RutaUnited KingdomOnyama Limba UNQUALIFIED
Jeanfrancois VenereItalyElwin Sharvill NEGOTIATION
Kadeem FlosiJapanAsiya Javayant RENEWAL
Ricardo GauchoBrazilStephen Shaw NEW
Greenwood BologniaArgentinaStephen Shaw UNQUALIFIED
Tony FollerGermanyAsiya Javayant NEW
Leon OldroydUnited KingdomIoni Bowcher UNQUALIFIED
Chavez BriddickItalyIoni Bowcher RENEWAL
Alejandro PerinIndiaAsiya Javayant NEW
Juan WieserBrazilAmy Elsner QUALIFIED
Antonio CaudyRussiaBernardo Dominic NEGOTIATION
Juan WieserJapanBernardo Dominic PROPOSAL
Aika InouyeArgentinaAmy Elsner RENEWAL
Ivar PaprockiIndiaAsiya Javayant NEGOTIATION
Arvin AlbaresJapanAmy Elsner PROPOSAL
Murillo MaletSpainIoni Bowcher PROPOSAL
Smith GlickItalyIvan Magalhaes RENEWAL
Johnson SergiGermanyAnna Fali NEW
Kaitlin OstroskyRussiaIoni Bowcher UNQUALIFIED
Cody SaylorsBrazilStephen Shaw NEW
Juan WieserFranceIoni Bowcher NEW
Adams MorascaIndiaIoni Bowcher RENEWAL
Aika InouyeFranceStephen Shaw NEGOTIATION
Arvin AlbaresItalyAsiya Javayant UNQUALIFIED
Wickens NestleGermanyXuxue Feng RENEWAL
Maisha RulapaughArgentinaXuxue Feng UNQUALIFIED
Arvin AlbaresJapanXuxue Feng NEGOTIATION
Mujtaba NickaArgentinaIoni Bowcher NEW
Aika InouyeRussiaOnyama Limba RENEWAL
Sinclair WaycottFranceAmy Elsner NEW
Izzy GarufiSpainAnna Fali RENEWAL
Francesco ShinkoJapanIoni Bowcher NEW
David DarakjyJapanElwin Sharvill UNQUALIFIED
Juan WieserCanadaIoni Bowcher UNQUALIFIED
Francesco ShinkoJapanAmy Elsner RENEWAL
Frozen Columns
Name
Murillo Malet
Ricardo Gaucho
Adams Morasca
Ashley Doe
Izzy Garufi
Antonio Caudy
Emily Whobrey
Misaki Royster
Aruna Figeroa
David Darakjy
Rodrigues Campain
Faith Gillian
Nicolas Iturbide
Smith Glick
Aditya Kusko
Salvatore Stockham
Cody Saylors
Faith Gillian
Aruna Figeroa
Deepesh Chui
Mujtaba Nicka
Munro Ferencz
Wickens Nestle
Jones Vocelka
Adams Morasca
Leon Oldroyd
Jeanfrancois Venere
Aika Inouye
Munro Ferencz
Clifford Rim
Ricardo Gaucho
Mayumi Kolmetz
Maria Marrier
Izzy Garufi
Mujtaba Nicka
Jefferson Schemmer
Maria Marrier
James Butt
Juan Wieser
Morrow Ruta
Deepesh Chui
Isabel Bowley
Leja Caldarera
Sinclair Waycott
Costa Dilliard
Kadeem Flosi
Jefferson Schemmer
Ricardo Gaucho
Faith Gillian
Ivar Paprocki
IdCountryDate
1000Italy2026-05-30
1001France2026-05-29
1002Argentina2026-05-11
1003Brazil2026-05-17
1004Italy2026-05-22
1005Brazil2026-06-07
1006Australia2026-05-11
1007United Kingdom2026-05-27
1008Australia2026-05-15
1009Italy2026-05-22
1010Brazil2026-05-22
1011Italy2026-05-20
1012Australia2026-05-27
1013Australia2026-06-04
1014United Kingdom2026-05-12
1015Russia2026-05-13
1016Canada2026-05-26
1017Canada2026-05-20
1018Japan2026-05-17
1019Brazil2026-05-11
1020Spain2026-05-20
1021Spain2026-06-06
1022Japan2026-05-16
1023India2026-06-04
1024United Kingdom2026-05-11
1025Australia2026-05-30
1026France2026-06-04
1027Spain2026-06-05
1028Japan2026-05-20
1029India2026-05-14
1030Australia2026-06-08
1031Brazil2026-05-16
1032Brazil2026-06-08
1033Japan2026-05-12
1034Brazil2026-06-02
1035Spain2026-06-06
1036Canada2026-05-27
1037Germany2026-05-18
1038France2026-06-07
1039France2026-06-01
1040Australia2026-05-19
1041India2026-06-01
1042Australia2026-05-11
1043United Kingdom2026-06-02
1044Canada2026-05-13
1045India2026-06-07
1046Russia2026-05-25
1047Japan2026-05-22
1048Argentina2026-05-14
1049United Kingdom2026-05-14

On-Demand Data

NameIdCountryDate
Clifford Rim1000United Kingdom2026-05-26
Aika Inouye1001Germany2026-05-31
Sinclair Waycott1002Argentina2026-05-20
Faith Gillian1003India2026-05-24
Octavia Malet1004Argentina2026-05-27
Stacey Maclead1005Australia2026-05-18
Aruna Figeroa1006Argentina2026-05-25
Ivar Paprocki1007United Kingdom2026-05-12
Faith Gillian1008India2026-05-19
Claire Tollner1009France2026-05-13
Mujtaba Nicka1010Japan2026-06-08
Julie Stenseth1011Canada2026-06-08
Nicolas Iturbide1012Australia2026-05-27
Darci Poquette1013Russia2026-05-19
Cody Saylors1014Spain2026-06-06
James Butt1015Australia2026-05-16
David Darakjy1016Italy2026-05-25
Deepesh Chui1017United Kingdom2026-06-06
Leon Oldroyd1018Germany2026-05-22
Stacey Maclead1019Australia2026-05-28
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Wickens NestleJapanAmy Elsner QUALIFIED
Ricardo GauchoRussiaElwin Sharvill QUALIFIED
James ButtCanadaIvan Magalhaes NEGOTIATION
Kaitlin OstroskyCanadaXuxue Feng NEW
Misaki RoysterGermanyAmy Elsner NEW
Aruna FigeroaIndiaStephen Shaw UNQUALIFIED
Greenwood BologniaCanadaAnna Fali UNQUALIFIED
Octavia MaletBrazilAnna Fali UNQUALIFIED
Costa DilliardUnited KingdomIoni Bowcher QUALIFIED
Mujtaba NickaIndiaIoni Bowcher NEGOTIATION
Emily WhobreyIndiaStephen Shaw PROPOSAL
Jeanfrancois VenereAustraliaIoni Bowcher QUALIFIED
Salvatore StockhamJapanBernardo Dominic QUALIFIED
Antonio CaudySpainXuxue Feng PROPOSAL
Antonio CaudyArgentinaIvan Magalhaes NEGOTIATION
Jeanfrancois VenereRussiaBernardo Dominic QUALIFIED
Faith GillianArgentinaStephen Shaw PROPOSAL
Jennifer AmigonSpainXuxue Feng NEW
Claire TollnerSpainAnna Fali RENEWAL
Julie StensethAustraliaBernardo Dominic UNQUALIFIED
Francesco ShinkoArgentinaBernardo Dominic UNQUALIFIED
Alejandro PerinCanadaStephen Shaw UNQUALIFIED
Sinclair WaycottFranceIvan Magalhaes NEGOTIATION
Maria MarrierIndiaOnyama Limba NEW
James ButtJapanXuxue Feng QUALIFIED
Antonio CaudyRussiaBernardo Dominic RENEWAL
Stacey MacleadFranceIvan Magalhaes NEW
Francesco ShinkoRussiaXuxue Feng RENEWAL
Claire TollnerItalyAsiya Javayant UNQUALIFIED
Chavez BriddickArgentinaOnyama Limba UNQUALIFIED
Antonio CaudyUnited KingdomIoni Bowcher RENEWAL
Darci PoquetteIndiaIoni Bowcher UNQUALIFIED
Mujtaba NickaItalyAnna Fali PROPOSAL
Kadeem FlosiJapanBernardo Dominic NEW
Chavez BriddickSpainAmy Elsner RENEWAL
Johnson SergiSpainStephen Shaw PROPOSAL
Faith GillianGermanyOnyama Limba QUALIFIED
David DarakjyArgentinaIoni Bowcher RENEWAL
Julie StensethItalyStephen Shaw NEW
Jeanfrancois VenereArgentinaElwin 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>