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
Costa DilliardRussiaElwin Sharvill NEGOTIATION
Francesco ShinkoArgentinaStephen Shaw PROPOSAL
Sinclair WaycottBrazilBernardo Dominic NEW
Cody SaylorsBrazilElwin Sharvill RENEWAL
David DarakjyUnited KingdomIoni Bowcher NEGOTIATION
Tony FollerSpainAsiya Javayant NEGOTIATION
Mujtaba NickaUnited KingdomElwin Sharvill RENEWAL
Smith GlickUnited KingdomElwin Sharvill NEGOTIATION
Clifford RimIndiaIoni Bowcher QUALIFIED
Aruna FigeroaSpainStephen Shaw UNQUALIFIED
Aika InouyeItalyIvan Magalhaes PROPOSAL
Ashley DoeCanadaElwin Sharvill NEGOTIATION
Arvin AlbaresRussiaIoni Bowcher NEW
Cody SaylorsRussiaAmy Elsner UNQUALIFIED
Ricardo GauchoCanadaElwin Sharvill NEGOTIATION
James ButtSpainAsiya Javayant QUALIFIED
Izzy GarufiBrazilOnyama Limba QUALIFIED
Jefferson SchemmerItalyIoni Bowcher UNQUALIFIED
David DarakjyIndiaAmy Elsner PROPOSAL
Aditya KuskoArgentinaXuxue Feng UNQUALIFIED
Antonio CaudySpainAmy Elsner QUALIFIED
Ashley DoeJapanXuxue Feng RENEWAL
Darci PoquetteUnited KingdomIvan Magalhaes PROPOSAL
Misaki RoysterIndiaAsiya Javayant PROPOSAL
Chavez BriddickUnited KingdomOnyama Limba QUALIFIED
Emily WhobreyJapanBernardo Dominic UNQUALIFIED
Francesco ShinkoFranceStephen Shaw RENEWAL
Kadeem FlosiUnited KingdomIoni Bowcher RENEWAL
Jefferson SchemmerSpainXuxue Feng NEGOTIATION
Chavez BriddickGermanyAmy Elsner UNQUALIFIED
Claire TollnerRussiaXuxue Feng NEW
Leon OldroydArgentinaBernardo Dominic PROPOSAL
Cody SaylorsSpainIoni Bowcher NEW
Munro FerenczGermanyAsiya Javayant RENEWAL
Murillo MaletJapanBernardo Dominic NEGOTIATION
Leon OldroydJapanElwin Sharvill UNQUALIFIED
Jennifer AmigonFranceXuxue Feng QUALIFIED
Aika InouyeUnited KingdomBernardo Dominic QUALIFIED
Claire TollnerGermanyAnna Fali PROPOSAL
Tony FollerJapanBernardo Dominic NEW
Cody SaylorsItalyXuxue Feng PROPOSAL
Deepesh ChuiSpainAsiya Javayant QUALIFIED
Isabel BowleyIndiaElwin Sharvill NEW
Silvio SlusarskiUnited KingdomBernardo Dominic QUALIFIED
Juan WieserItalyIvan Magalhaes NEW
Aika InouyeUnited KingdomIoni Bowcher QUALIFIED
Faith GillianItalyOnyama Limba PROPOSAL
Mayumi KolmetzSpainOnyama Limba UNQUALIFIED
Jeanfrancois VenereCanadaIvan Magalhaes RENEWAL
Sinclair WaycottRussiaIoni Bowcher RENEWAL
Horizontal
NameCountryRepresentativeStatus
Maisha RulapaughUnited KingdomElwin Sharvill QUALIFIED
James ButtBrazilBernardo Dominic NEGOTIATION
Antonio CaudySpainAsiya Javayant NEGOTIATION
Maisha RulapaughArgentinaBernardo Dominic QUALIFIED
Isabel BowleySpainAsiya Javayant UNQUALIFIED
Nicolas IturbideUnited KingdomBernardo Dominic RENEWAL
Stacey MacleadBrazilXuxue Feng RENEWAL
Wickens NestleAustraliaIvan Magalhaes RENEWAL
Octavia MaletGermanyIoni Bowcher UNQUALIFIED
Octavia MaletSpainStephen Shaw QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Faith GillianBrazil2026-06-02Commercial Press RENEWAL95Onyama Limba
1001Stacey MacleadUnited Kingdom2026-06-06King, Christopher A Esq QUALIFIED75Asiya Javayant
1002Wickens NestleUnited Kingdom2026-05-29Chapman, Ross E Esq RENEWAL75Ioni Bowcher
1003Deepesh ChuiCanada2026-05-30Chanay, Jeffrey A Esq NEW46Onyama Limba
1004Clifford RimItaly2026-06-03Dorl, James J Esq PROPOSAL32Elwin Sharvill
1005Aditya KuskoAustralia2026-05-15King, Christopher A Esq QUALIFIED77Stephen Shaw
1006Aika InouyeFrance2026-06-02Truhlar And Truhlar Attys NEGOTIATION86Stephen Shaw
1007Ashley DoeIndia2026-06-07Benton, John B Jr UNQUALIFIED47Stephen Shaw
1008Juan WieserRussia2026-05-31Chanay, Jeffrey A Esq UNQUALIFIED25Ivan Magalhaes
1009Chavez BriddickArgentina2026-06-03Chanay, Jeffrey A Esq PROPOSAL35Asiya Javayant
1010Nicolas IturbideUnited Kingdom2026-05-28Chapman, Ross E Esq NEW85Xuxue Feng
1011Mujtaba NickaAustralia2026-06-04Commercial Press RENEWAL63Anna Fali
1012Jennifer AmigonIndia2026-05-24King, Christopher A Esq NEGOTIATION25Asiya Javayant
1013Juan WieserRussia2026-06-10Benton, John B Jr QUALIFIED75Stephen Shaw
1014Chavez BriddickRussia2026-05-20Commercial Press UNQUALIFIED96Anna Fali
1015Munro FerenczBrazil2026-05-28Chanay, Jeffrey A Esq RENEWAL0Elwin Sharvill
1016Arvin AlbaresGermany2026-06-09Chapman, Ross E Esq PROPOSAL62Elwin Sharvill
1017Mujtaba NickaJapan2026-06-07Feiner Bros PROPOSAL79Asiya Javayant
1018Costa DilliardGermany2026-05-20Rangoni Of Florence UNQUALIFIED84Onyama Limba
1019Jennifer AmigonBrazil2026-06-03Feltz Printing Service NEW59Asiya Javayant
1020Tony FollerGermany2026-06-05Benton, John B Jr UNQUALIFIED92Ivan Magalhaes
1021Faith GillianJapan2026-06-04Printing Dimensions NEGOTIATION87Ioni Bowcher
1022Chavez BriddickArgentina2026-05-26Chemel, James L Cpa UNQUALIFIED47Asiya Javayant
1023Smith GlickGermany2026-05-24Chanay, Jeffrey A Esq PROPOSAL94Anna Fali
1024Julie StensethIndia2026-05-24Feltz Printing Service RENEWAL60Onyama Limba
1025Izzy GarufiSpain2026-06-05Chemel, James L Cpa RENEWAL75Ioni Bowcher
1026Ricardo GauchoAustralia2026-05-22Chemel, James L Cpa UNQUALIFIED49Amy Elsner
1027Jones VocelkaGermany2026-06-06Feltz Printing Service UNQUALIFIED18Anna Fali
1028Mayumi KolmetzUnited Kingdom2026-06-12Truhlar And Truhlar Attys NEGOTIATION41Elwin Sharvill
1029Aika InouyeItaly2026-06-05Rousseaux, Michael Esq QUALIFIED55Anna Fali
1030Rodrigues CampainIndia2026-06-10Chanay, Jeffrey A Esq PROPOSAL54Stephen Shaw
1031Kaitlin OstroskyJapan2026-06-02Feiner Bros NEW69Bernardo Dominic
1032Cody SaylorsRussia2026-05-15Buckley Miller Wright RENEWAL47Stephen Shaw
1033Claire TollnerItaly2026-06-08Chanay, Jeffrey A Esq NEW84Bernardo Dominic
1034Mayumi KolmetzFrance2026-06-09Printing Dimensions PROPOSAL74Amy Elsner
1035Mujtaba NickaSpain2026-05-16Rangoni Of Florence UNQUALIFIED66Xuxue Feng
1036Ivar PaprockiArgentina2026-05-28Chemel, James L Cpa NEW52Elwin Sharvill
1037Silvio SlusarskiSpain2026-05-29Chanay, Jeffrey A Esq NEGOTIATION83Ivan Magalhaes
1038Sinclair WaycottRussia2026-06-10Dorl, James J Esq NEW23Elwin Sharvill
1039Rodrigues CampainJapan2026-06-06Printing Dimensions NEW5Bernardo Dominic
1040Jones VocelkaJapan2026-06-05Chemel, James L Cpa NEW14Bernardo Dominic
1041Aika InouyeIndia2026-05-22King, Christopher A Esq NEGOTIATION4Elwin Sharvill
1042Tony FollerUnited Kingdom2026-06-06Feiner Bros PROPOSAL63Amy Elsner
1043Munro FerenczAustralia2026-05-14Feltz Printing Service RENEWAL58Amy Elsner
1044Juan WieserSpain2026-06-10Feiner Bros QUALIFIED25Ivan Magalhaes
1045Aruna FigeroaUnited Kingdom2026-05-30Dorl, James J Esq NEW16Xuxue Feng
1046Izzy GarufiCanada2026-05-29Commercial Press RENEWAL34Anna Fali
1047Stacey MacleadUnited Kingdom2026-05-29Chanay, Jeffrey A Esq QUALIFIED69Onyama Limba
1048Jennifer AmigonRussia2026-05-21Truhlar And Truhlar Attys UNQUALIFIED9Xuxue Feng
1049Jefferson SchemmerArgentina2026-06-04Rangoni Of Florence UNQUALIFIED33Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Greenwood BologniaBrazilAnna Fali QUALIFIED
Tony FollerSpainBernardo Dominic QUALIFIED
Silvio SlusarskiUnited KingdomAsiya Javayant QUALIFIED
Isabel BowleyGermanyXuxue Feng PROPOSAL
Francesco ShinkoCanadaAnna Fali PROPOSAL
Nicolas IturbideFranceElwin Sharvill PROPOSAL
Tony FollerJapanAmy Elsner NEW
Johnson SergiJapanBernardo Dominic NEGOTIATION
Sinclair WaycottFranceAnna Fali QUALIFIED
Jones VocelkaGermanyXuxue Feng NEGOTIATION
Jeanfrancois VenereSpainStephen Shaw NEGOTIATION
Munro FerenczJapanIoni Bowcher PROPOSAL
Greenwood BologniaIndiaOnyama Limba QUALIFIED
Chavez BriddickUnited KingdomIoni Bowcher NEGOTIATION
Clifford RimBrazilAmy Elsner NEW
Jennifer AmigonJapanXuxue Feng NEW
Clifford RimFranceStephen Shaw UNQUALIFIED
Maria MarrierFranceBernardo Dominic NEGOTIATION
Maisha RulapaughGermanyIoni Bowcher RENEWAL
Octavia MaletIndiaAnna Fali NEW
Claire TollnerRussiaBernardo Dominic UNQUALIFIED
Octavia MaletCanadaOnyama Limba NEW
Kadeem FlosiItalyIoni Bowcher UNQUALIFIED
Adams MorascaBrazilAmy Elsner RENEWAL
Julie StensethFranceOnyama Limba RENEWAL
Silvio SlusarskiBrazilBernardo Dominic UNQUALIFIED
Claire TollnerArgentinaIoni Bowcher RENEWAL
Jeanfrancois VenereJapanOnyama Limba PROPOSAL
Francesco ShinkoUnited KingdomElwin Sharvill QUALIFIED
Aika InouyeJapanOnyama Limba RENEWAL
Jennifer AmigonIndiaBernardo Dominic NEW
Murillo MaletBrazilBernardo Dominic NEW
Sinclair WaycottGermanyXuxue Feng NEGOTIATION
Rodrigues CampainBrazilAsiya Javayant QUALIFIED
Francesco ShinkoIndiaAsiya Javayant QUALIFIED
Adams MorascaCanadaIvan Magalhaes UNQUALIFIED
Salvatore StockhamFranceIvan Magalhaes RENEWAL
Francesco ShinkoFranceOnyama Limba NEGOTIATION
Kadeem FlosiRussiaIvan Magalhaes NEW
Jennifer AmigonFranceIvan Magalhaes PROPOSAL
Jefferson SchemmerRussiaAnna Fali RENEWAL
Maria MarrierAustraliaStephen Shaw PROPOSAL
Darci PoquetteCanadaAsiya Javayant RENEWAL
Jeanfrancois VenereAustraliaXuxue Feng RENEWAL
Isabel BowleyAustraliaXuxue Feng PROPOSAL
Jennifer AmigonBrazilBernardo Dominic NEW
Isabel BowleySpainElwin Sharvill NEW
Leja CaldareraSpainXuxue Feng NEGOTIATION
Stacey MacleadUnited KingdomAmy Elsner UNQUALIFIED
Costa DilliardBrazilOnyama Limba QUALIFIED
Frozen Columns
Name
Deepesh Chui
Kaitlin Ostrosky
Greenwood Bolognia
Sinclair Waycott
Leja Caldarera
Aika Inouye
Clifford Rim
Antonio Caudy
Tony Foller
Aika Inouye
Maria Marrier
Stacey Maclead
Jones Vocelka
Munro Ferencz
Nicolas Iturbide
Deepesh Chui
Aika Inouye
Kadeem Flosi
Greenwood Bolognia
Munro Ferencz
Juan Wieser
Arvin Albares
Ricardo Gaucho
Kaitlin Ostrosky
Leon Oldroyd
Aika Inouye
Greenwood Bolognia
Costa Dilliard
Francesco Shinko
Octavia Malet
Izzy Garufi
Izzy Garufi
Nicolas Iturbide
Ricardo Gaucho
Tony Foller
Tony Foller
Misaki Royster
Izzy Garufi
Juan Wieser
Leon Oldroyd
Sinclair Waycott
Clifford Rim
Isabel Bowley
Ivar Paprocki
Mujtaba Nicka
Jefferson Schemmer
Chavez Briddick
Leon Oldroyd
Kaitlin Ostrosky
David Darakjy
IdCountryDate
1000Germany2026-05-19
1001Canada2026-06-10
1002Japan2026-05-22
1003Italy2026-06-02
1004India2026-06-07
1005United Kingdom2026-05-29
1006India2026-05-26
1007France2026-06-06
1008Spain2026-06-03
1009Russia2026-05-16
1010Japan2026-05-25
1011Russia2026-05-29
1012Australia2026-05-25
1013France2026-06-09
1014Argentina2026-05-15
1015Argentina2026-05-30
1016France2026-06-06
1017India2026-05-29
1018Australia2026-06-08
1019France2026-05-24
1020Spain2026-06-02
1021India2026-05-23
1022Australia2026-06-10
1023Japan2026-05-22
1024Brazil2026-06-08
1025France2026-05-18
1026Germany2026-06-05
1027Japan2026-05-15
1028Japan2026-05-24
1029France2026-06-04
1030Spain2026-05-14
1031Germany2026-06-09
1032Japan2026-06-06
1033United Kingdom2026-05-22
1034United Kingdom2026-05-27
1035Germany2026-05-15
1036Japan2026-05-25
1037India2026-06-09
1038India2026-05-19
1039Argentina2026-06-01
1040Spain2026-06-07
1041United Kingdom2026-05-28
1042Australia2026-05-30
1043Australia2026-06-11
1044Italy2026-05-29
1045India2026-05-18
1046Spain2026-05-15
1047Japan2026-06-04
1048Russia2026-05-25
1049Argentina2026-06-12

On-Demand Data

NameIdCountryDate
Kaitlin Ostrosky1000Argentina2026-05-20
Ricardo Gaucho1001United Kingdom2026-05-16
Cody Saylors1002France2026-05-23
Kadeem Flosi1003India2026-05-28
Jefferson Schemmer1004United Kingdom2026-05-19
Ricardo Gaucho1005Russia2026-06-05
Maria Marrier1006India2026-06-07
Isabel Bowley1007United Kingdom2026-05-30
Rodrigues Campain1008India2026-06-03
Adams Morasca1009United Kingdom2026-05-26
Aika Inouye1010Japan2026-06-05
Emily Whobrey1011Spain2026-05-29
Ashley Doe1012Japan2026-06-06
Murillo Malet1013Canada2026-06-03
Juan Wieser1014Germany2026-06-04
Mujtaba Nicka1015Japan2026-05-23
Aika Inouye1016France2026-06-07
Johnson Sergi1017Australia2026-06-11
Murillo Malet1018Russia2026-05-20
David Darakjy1019United Kingdom2026-06-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Julie StensethArgentinaIvan Magalhaes NEGOTIATION
Wickens NestleCanadaXuxue Feng NEGOTIATION
Costa DilliardBrazilOnyama Limba QUALIFIED
Izzy GarufiJapanStephen Shaw QUALIFIED
Maisha RulapaughArgentinaAnna Fali UNQUALIFIED
Aditya KuskoAustraliaBernardo Dominic PROPOSAL
Ashley DoeGermanyAsiya Javayant PROPOSAL
Isabel BowleyRussiaAnna Fali PROPOSAL
Alejandro PerinGermanyAnna Fali UNQUALIFIED
Jones VocelkaFranceOnyama Limba PROPOSAL
Octavia MaletGermanyElwin Sharvill RENEWAL
Jeanfrancois VenereCanadaXuxue Feng QUALIFIED
Aruna FigeroaArgentinaStephen Shaw PROPOSAL
Julie StensethIndiaElwin Sharvill NEGOTIATION
Deepesh ChuiBrazilAsiya Javayant QUALIFIED
Kaitlin OstroskyJapanBernardo Dominic QUALIFIED
Alejandro PerinItalyBernardo Dominic PROPOSAL
Greenwood BologniaGermanyStephen Shaw UNQUALIFIED
Maria MarrierUnited KingdomIvan Magalhaes RENEWAL
Rodrigues CampainGermanyStephen Shaw UNQUALIFIED
Izzy GarufiCanadaOnyama Limba RENEWAL
Greenwood BologniaJapanStephen Shaw PROPOSAL
Costa DilliardBrazilOnyama Limba PROPOSAL
Deepesh ChuiIndiaIoni Bowcher NEGOTIATION
Jones VocelkaArgentinaOnyama Limba QUALIFIED
Darci PoquetteFranceElwin Sharvill NEW
Ashley DoeItalyXuxue Feng PROPOSAL
Tony FollerFranceAsiya Javayant NEW
Salvatore StockhamGermanyAsiya Javayant RENEWAL
Kadeem FlosiRussiaBernardo Dominic NEGOTIATION
Morrow RutaFranceAmy Elsner NEGOTIATION
Claire TollnerFranceBernardo Dominic NEW
Antonio CaudyAustraliaOnyama Limba NEW
Izzy GarufiCanadaIvan Magalhaes RENEWAL
Nicolas IturbideGermanyElwin Sharvill PROPOSAL
Emily WhobreyIndiaStephen Shaw RENEWAL
Greenwood BologniaUnited KingdomElwin Sharvill PROPOSAL
Maria MarrierJapanAnna Fali NEGOTIATION
Deepesh ChuiItalyBernardo Dominic RENEWAL
Wickens NestleRussiaAnna Fali UNQUALIFIED

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