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
Ricardo GauchoJapanOnyama Limba QUALIFIED
Clifford RimAustraliaOnyama Limba RENEWAL
Stacey MacleadUnited KingdomBernardo Dominic NEW
Chavez BriddickRussiaAsiya Javayant QUALIFIED
Ivar PaprockiItalyXuxue Feng UNQUALIFIED
Cody SaylorsItalyIoni Bowcher NEGOTIATION
Misaki RoysterGermanyElwin Sharvill PROPOSAL
Greenwood BologniaCanadaStephen Shaw PROPOSAL
David DarakjySpainAmy Elsner UNQUALIFIED
Jefferson SchemmerArgentinaAmy Elsner RENEWAL
James ButtGermanyOnyama Limba NEGOTIATION
Leon OldroydFranceBernardo Dominic NEW
Maisha RulapaughGermanyOnyama Limba UNQUALIFIED
Mayumi KolmetzGermanyAsiya Javayant NEW
Claire TollnerItalyOnyama Limba NEGOTIATION
Arvin AlbaresAustraliaOnyama Limba NEGOTIATION
Ashley DoeJapanIoni Bowcher RENEWAL
Ivar PaprockiIndiaIoni Bowcher NEW
Mayumi KolmetzBrazilIoni Bowcher NEGOTIATION
Julie StensethFranceIvan Magalhaes RENEWAL
Jennifer AmigonFranceIvan Magalhaes QUALIFIED
Tony FollerSpainIoni Bowcher UNQUALIFIED
Johnson SergiBrazilAnna Fali RENEWAL
Kadeem FlosiGermanyAnna Fali QUALIFIED
Emily WhobreyCanadaElwin Sharvill NEGOTIATION
Mayumi KolmetzArgentinaBernardo Dominic UNQUALIFIED
James ButtJapanAnna Fali PROPOSAL
Salvatore StockhamUnited KingdomAsiya Javayant NEW
Chavez BriddickCanadaAmy Elsner NEW
Smith GlickSpainAsiya Javayant PROPOSAL
Smith GlickRussiaXuxue Feng RENEWAL
Aditya KuskoJapanBernardo Dominic QUALIFIED
Sinclair WaycottFranceAnna Fali NEGOTIATION
Ivar PaprockiJapanBernardo Dominic UNQUALIFIED
Kadeem FlosiGermanyIvan Magalhaes UNQUALIFIED
Deepesh ChuiJapanOnyama Limba RENEWAL
James ButtItalyAmy Elsner NEGOTIATION
Antonio CaudyBrazilBernardo Dominic NEGOTIATION
Julie StensethIndiaAsiya Javayant QUALIFIED
Leon OldroydBrazilXuxue Feng NEGOTIATION
Murillo MaletGermanyXuxue Feng PROPOSAL
Francesco ShinkoCanadaIoni Bowcher QUALIFIED
Costa DilliardItalyAmy Elsner QUALIFIED
Ashley DoeRussiaBernardo Dominic UNQUALIFIED
Cody SaylorsRussiaIoni Bowcher RENEWAL
Octavia MaletFranceAsiya Javayant RENEWAL
Faith GillianSpainAsiya Javayant UNQUALIFIED
Leja CaldareraRussiaIoni Bowcher PROPOSAL
Emily WhobreyJapanOnyama Limba NEW
Jeanfrancois VenereArgentinaXuxue Feng UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Murillo MaletAustraliaBernardo Dominic NEW
Jennifer AmigonUnited KingdomBernardo Dominic UNQUALIFIED
Rodrigues CampainGermanyBernardo Dominic UNQUALIFIED
Emily WhobreyIndiaElwin Sharvill NEW
Ashley DoeCanadaAmy Elsner UNQUALIFIED
Clifford RimUnited KingdomAmy Elsner QUALIFIED
Misaki RoysterSpainXuxue Feng NEW
Adams MorascaIndiaIvan Magalhaes QUALIFIED
Aruna FigeroaArgentinaElwin Sharvill QUALIFIED
Chavez BriddickBrazilAsiya Javayant QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Misaki RoysterRussia2026-04-14Commercial Press NEGOTIATION90Xuxue Feng
1001Maisha RulapaughArgentina2026-04-07Chemel, James L Cpa PROPOSAL58Xuxue Feng
1002Aruna FigeroaJapan2026-04-24Buckley Miller Wright QUALIFIED32Ivan Magalhaes
1003Kaitlin OstroskyAustralia2026-04-29Chanay, Jeffrey A Esq NEGOTIATION59Stephen Shaw
1004Antonio CaudySpain2026-05-01Chemel, James L Cpa UNQUALIFIED47Onyama Limba
1005Emily WhobreyJapan2026-04-30King, Christopher A Esq RENEWAL33Onyama Limba
1006Leon OldroydAustralia2026-04-17Rangoni Of Florence NEGOTIATION41Amy Elsner
1007Wickens NestleSpain2026-04-07Commercial Press PROPOSAL6Amy Elsner
1008Wickens NestleAustralia2026-04-06King, Christopher A Esq NEW96Stephen Shaw
1009Kaitlin OstroskyBrazil2026-04-09Chanay, Jeffrey A Esq QUALIFIED95Stephen Shaw
1010Darci PoquetteAustralia2026-04-22Dorl, James J Esq NEGOTIATION51Xuxue Feng
1011Aika InouyeSpain2026-04-27Printing Dimensions QUALIFIED60Anna Fali
1012Smith GlickAustralia2026-05-01Rangoni Of Florence PROPOSAL71Asiya Javayant
1013Claire TollnerSpain2026-04-23Buckley Miller Wright QUALIFIED7Ivan Magalhaes
1014Aruna FigeroaSpain2026-04-16Rangoni Of Florence RENEWAL58Amy Elsner
1015Aditya KuskoGermany2026-04-06Rousseaux, Michael Esq UNQUALIFIED87Xuxue Feng
1016Stacey MacleadAustralia2026-04-16Chemel, James L Cpa QUALIFIED52Ioni Bowcher
1017Tony FollerRussia2026-04-17Chemel, James L Cpa UNQUALIFIED28Anna Fali
1018Ashley DoeJapan2026-05-04Truhlar And Truhlar Attys UNQUALIFIED12Ioni Bowcher
1019Silvio SlusarskiRussia2026-04-13Benton, John B Jr PROPOSAL90Onyama Limba
1020Johnson SergiIndia2026-05-03Feiner Bros PROPOSAL52Onyama Limba
1021Tony FollerJapan2026-04-17Rangoni Of Florence UNQUALIFIED77Ivan Magalhaes
1022Salvatore StockhamBrazil2026-05-02Chapman, Ross E Esq PROPOSAL10Onyama Limba
1023Murillo MaletFrance2026-04-26Benton, John B Jr NEW93Asiya Javayant
1024Emily WhobreyFrance2026-04-11Chanay, Jeffrey A Esq RENEWAL56Bernardo Dominic
1025Mayumi KolmetzRussia2026-04-23Feltz Printing Service NEW83Bernardo Dominic
1026Munro FerenczBrazil2026-04-10Truhlar And Truhlar Attys PROPOSAL9Ioni Bowcher
1027Francesco ShinkoCanada2026-04-08Chapman, Ross E Esq RENEWAL2Elwin Sharvill
1028Aruna FigeroaFrance2026-04-05Buckley Miller Wright UNQUALIFIED29Ioni Bowcher
1029Aruna FigeroaUnited Kingdom2026-04-22Benton, John B Jr NEW76Asiya Javayant
1030Ricardo GauchoCanada2026-04-08Feltz Printing Service QUALIFIED89Anna Fali
1031Darci PoquetteUnited Kingdom2026-04-13Chemel, James L Cpa NEGOTIATION97Amy Elsner
1032Smith GlickArgentina2026-05-01Chapman, Ross E Esq UNQUALIFIED55Amy Elsner
1033Juan WieserCanada2026-04-16Buckley Miller Wright RENEWAL82Bernardo Dominic
1034Darci PoquetteBrazil2026-04-11Chapman, Ross E Esq NEW97Onyama Limba
1035Jeanfrancois VenereBrazil2026-04-10Rangoni Of Florence RENEWAL38Ioni Bowcher
1036Kaitlin OstroskyRussia2026-04-19Morlong Associates NEW37Ioni Bowcher
1037Wickens NestleFrance2026-05-04Truhlar And Truhlar Attys NEW99Bernardo Dominic
1038Stacey MacleadItaly2026-04-16Rousseaux, Michael Esq UNQUALIFIED61Stephen Shaw
1039Jefferson SchemmerAustralia2026-04-10Commercial Press NEGOTIATION30Anna Fali
1040Izzy GarufiFrance2026-04-15Benton, John B Jr UNQUALIFIED61Stephen Shaw
1041Julie StensethUnited Kingdom2026-04-12Rangoni Of Florence PROPOSAL82Asiya Javayant
1042Deepesh ChuiItaly2026-04-12Chapman, Ross E Esq PROPOSAL63Bernardo Dominic
1043Kadeem FlosiJapan2026-04-10King, Christopher A Esq UNQUALIFIED41Asiya Javayant
1044Emily WhobreyGermany2026-04-13Feltz Printing Service RENEWAL13Bernardo Dominic
1045James ButtBrazil2026-04-28King, Christopher A Esq QUALIFIED54Asiya Javayant
1046Salvatore StockhamJapan2026-05-04Printing Dimensions UNQUALIFIED39Asiya Javayant
1047Deepesh ChuiItaly2026-05-04Chanay, Jeffrey A Esq QUALIFIED87Ioni Bowcher
1048Misaki RoysterIndia2026-04-27Commercial Press QUALIFIED79Onyama Limba
1049Arvin AlbaresBrazil2026-04-05Feiner Bros PROPOSAL34Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Rodrigues CampainIndiaIvan Magalhaes UNQUALIFIED
David DarakjyJapanOnyama Limba PROPOSAL
Jeanfrancois VenereIndiaIvan Magalhaes NEGOTIATION
Octavia MaletGermanyXuxue Feng NEGOTIATION
Clifford RimFranceIvan Magalhaes PROPOSAL
Stacey MacleadArgentinaOnyama Limba NEGOTIATION
Nicolas IturbideJapanAnna Fali QUALIFIED
Ivar PaprockiGermanyStephen Shaw UNQUALIFIED
Mujtaba NickaAustraliaStephen Shaw PROPOSAL
Francesco ShinkoItalyStephen Shaw PROPOSAL
Stacey MacleadFranceAmy Elsner PROPOSAL
Julie StensethIndiaIoni Bowcher NEGOTIATION
Kaitlin OstroskyItalyOnyama Limba PROPOSAL
Kaitlin OstroskyItalyIvan Magalhaes NEW
Wickens NestleIndiaOnyama Limba NEW
Kaitlin OstroskyAustraliaIoni Bowcher PROPOSAL
Rodrigues CampainJapanIoni Bowcher QUALIFIED
Arvin AlbaresBrazilAmy Elsner RENEWAL
Claire TollnerArgentinaElwin Sharvill NEGOTIATION
Mayumi KolmetzCanadaIoni Bowcher NEW
Clifford RimBrazilAmy Elsner PROPOSAL
Faith GillianBrazilIoni Bowcher PROPOSAL
Mujtaba NickaUnited KingdomBernardo Dominic PROPOSAL
Antonio CaudyRussiaAsiya Javayant UNQUALIFIED
Rodrigues CampainIndiaIoni Bowcher NEW
Johnson SergiArgentinaIoni Bowcher NEW
Jones VocelkaCanadaOnyama Limba NEGOTIATION
Morrow RutaCanadaIoni Bowcher PROPOSAL
Ivar PaprockiSpainElwin Sharvill PROPOSAL
Smith GlickRussiaStephen Shaw NEW
Costa DilliardBrazilOnyama Limba UNQUALIFIED
Maisha RulapaughBrazilElwin Sharvill RENEWAL
Wickens NestleBrazilIoni Bowcher RENEWAL
Izzy GarufiAustraliaXuxue Feng NEGOTIATION
Arvin AlbaresAustraliaStephen Shaw RENEWAL
Johnson SergiSpainXuxue Feng NEGOTIATION
Faith GillianFranceXuxue Feng NEW
Emily WhobreyIndiaElwin Sharvill UNQUALIFIED
Aditya KuskoSpainIoni Bowcher UNQUALIFIED
Greenwood BologniaAustraliaOnyama Limba QUALIFIED
Deepesh ChuiSpainStephen Shaw QUALIFIED
Clifford RimRussiaAsiya Javayant QUALIFIED
James ButtRussiaOnyama Limba NEW
Aruna FigeroaJapanElwin Sharvill UNQUALIFIED
Salvatore StockhamIndiaStephen Shaw UNQUALIFIED
Aika InouyeJapanAmy Elsner NEGOTIATION
Jones VocelkaArgentinaElwin Sharvill NEW
Leon OldroydSpainBernardo Dominic NEGOTIATION
Mayumi KolmetzRussiaStephen Shaw QUALIFIED
Sinclair WaycottSpainAmy Elsner NEW
Frozen Columns
Name
Nicolas Iturbide
Costa Dilliard
Nicolas Iturbide
Claire Tollner
Aika Inouye
Emily Whobrey
Johnson Sergi
Chavez Briddick
Isabel Bowley
Munro Ferencz
Faith Gillian
Greenwood Bolognia
Octavia Malet
Maisha Rulapaugh
Ricardo Gaucho
Leon Oldroyd
Smith Glick
Nicolas Iturbide
Ricardo Gaucho
Silvio Slusarski
David Darakjy
Octavia Malet
James Butt
Tony Foller
Tony Foller
James Butt
Wickens Nestle
Greenwood Bolognia
Deepesh Chui
Stacey Maclead
Julie Stenseth
Johnson Sergi
Jennifer Amigon
Julie Stenseth
Adams Morasca
Claire Tollner
Clifford Rim
Kadeem Flosi
Kaitlin Ostrosky
Smith Glick
Jennifer Amigon
Rodrigues Campain
Leon Oldroyd
Kadeem Flosi
Rodrigues Campain
Stacey Maclead
Murillo Malet
Maria Marrier
Johnson Sergi
Salvatore Stockham
IdCountryDate
1000Australia2026-04-10
1001Australia2026-04-13
1002United Kingdom2026-04-28
1003Japan2026-04-24
1004Germany2026-04-05
1005Japan2026-04-06
1006United Kingdom2026-04-30
1007Japan2026-04-19
1008Japan2026-04-21
1009Brazil2026-04-20
1010Brazil2026-04-09
1011India2026-04-28
1012United Kingdom2026-04-29
1013Canada2026-04-29
1014Australia2026-04-18
1015Japan2026-05-02
1016France2026-04-19
1017Spain2026-04-20
1018Russia2026-04-21
1019France2026-04-17
1020Brazil2026-04-21
1021Japan2026-04-11
1022Australia2026-04-17
1023Japan2026-04-17
1024Argentina2026-04-30
1025France2026-04-27
1026Spain2026-04-08
1027Canada2026-05-04
1028Canada2026-04-24
1029Spain2026-04-19
1030Argentina2026-04-11
1031France2026-04-28
1032Italy2026-04-24
1033Germany2026-05-02
1034Brazil2026-04-13
1035Australia2026-04-17
1036United Kingdom2026-04-11
1037Brazil2026-04-18
1038United Kingdom2026-05-01
1039Germany2026-04-20
1040United Kingdom2026-05-03
1041India2026-04-05
1042Russia2026-04-22
1043Spain2026-04-24
1044Russia2026-04-16
1045Germany2026-04-26
1046France2026-04-29
1047Russia2026-04-18
1048Brazil2026-04-05
1049Australia2026-04-19

On-Demand Data

NameIdCountryDate
Mujtaba Nicka1000Canada2026-04-28
Ricardo Gaucho1001Italy2026-04-17
Stacey Maclead1002Germany2026-04-19
Adams Morasca1003Germany2026-04-26
Costa Dilliard1004Japan2026-04-28
Silvio Slusarski1005United Kingdom2026-04-16
Octavia Malet1006Germany2026-04-13
Emily Whobrey1007Germany2026-04-25
Adams Morasca1008United Kingdom2026-04-22
Leon Oldroyd1009Canada2026-04-06
Sinclair Waycott1010Canada2026-04-23
Nicolas Iturbide1011Australia2026-04-17
Silvio Slusarski1012Australia2026-04-26
Clifford Rim1013India2026-04-19
Antonio Caudy1014India2026-04-07
Jeanfrancois Venere1015Argentina2026-04-12
Arvin Albares1016Canada2026-04-17
Leja Caldarera1017Germany2026-04-28
Stacey Maclead1018Australia2026-04-20
Tony Foller1019Spain2026-04-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
James ButtGermanyAmy Elsner NEW
Julie StensethRussiaIvan Magalhaes PROPOSAL
Rodrigues CampainIndiaAsiya Javayant PROPOSAL
Morrow RutaArgentinaIoni Bowcher QUALIFIED
Jones VocelkaBrazilAsiya Javayant QUALIFIED
Rodrigues CampainSpainAnna Fali NEGOTIATION
Mayumi KolmetzAustraliaAmy Elsner NEGOTIATION
Julie StensethFranceAnna Fali QUALIFIED
Aruna FigeroaGermanyXuxue Feng PROPOSAL
Johnson SergiJapanAsiya Javayant NEGOTIATION
Maisha RulapaughArgentinaStephen Shaw RENEWAL
Costa DilliardArgentinaXuxue Feng QUALIFIED
Aditya KuskoArgentinaAsiya Javayant NEW
Stacey MacleadJapanIoni Bowcher UNQUALIFIED
Arvin AlbaresRussiaXuxue Feng PROPOSAL
Faith GillianIndiaAnna Fali QUALIFIED
Antonio CaudyRussiaAnna Fali RENEWAL
Claire TollnerBrazilAnna Fali NEGOTIATION
Isabel BowleySpainStephen Shaw NEW
Aika InouyeIndiaAmy Elsner QUALIFIED
Ricardo GauchoAustraliaIoni Bowcher NEW
Cody SaylorsRussiaOnyama Limba NEW
Deepesh ChuiUnited KingdomBernardo Dominic UNQUALIFIED
Nicolas IturbideIndiaElwin Sharvill NEGOTIATION
Isabel BowleySpainElwin Sharvill RENEWAL
Sinclair WaycottArgentinaElwin Sharvill QUALIFIED
Emily WhobreyArgentinaXuxue Feng RENEWAL
Jeanfrancois VenereJapanBernardo Dominic QUALIFIED
Misaki RoysterIndiaBernardo Dominic QUALIFIED
Ricardo GauchoUnited KingdomIvan Magalhaes UNQUALIFIED
Octavia MaletJapanElwin Sharvill QUALIFIED
Kaitlin OstroskyCanadaAnna Fali NEGOTIATION
Ricardo GauchoSpainAmy Elsner UNQUALIFIED
Silvio SlusarskiSpainBernardo Dominic UNQUALIFIED
Isabel BowleyFranceAmy Elsner NEW
Mujtaba NickaSpainIoni Bowcher NEGOTIATION
Nicolas IturbideAustraliaElwin Sharvill NEW
Wickens NestleSpainAmy Elsner NEGOTIATION
Johnson SergiJapanBernardo Dominic QUALIFIED
Arvin AlbaresBrazilStephen Shaw 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>