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
Leja CaldareraIndiaBernardo Dominic UNQUALIFIED
Rodrigues CampainSpainAsiya Javayant RENEWAL
Cody SaylorsGermanyIvan Magalhaes PROPOSAL
Murillo MaletItalyAmy Elsner RENEWAL
Faith GillianCanadaIoni Bowcher NEGOTIATION
Arvin AlbaresCanadaElwin Sharvill QUALIFIED
Leja CaldareraBrazilIoni Bowcher QUALIFIED
Izzy GarufiBrazilAnna Fali PROPOSAL
Cody SaylorsAustraliaElwin Sharvill PROPOSAL
Juan WieserBrazilAsiya Javayant NEGOTIATION
David DarakjyUnited KingdomElwin Sharvill NEW
Leon OldroydAustraliaBernardo Dominic NEW
Darci PoquetteJapanStephen Shaw RENEWAL
Kaitlin OstroskyGermanyStephen Shaw PROPOSAL
Murillo MaletItalyXuxue Feng RENEWAL
Munro FerenczUnited KingdomOnyama Limba UNQUALIFIED
Deepesh ChuiJapanOnyama Limba NEW
Tony FollerArgentinaIvan Magalhaes PROPOSAL
Wickens NestleCanadaAnna Fali QUALIFIED
Tony FollerCanadaAnna Fali RENEWAL
Aditya KuskoRussiaIoni Bowcher PROPOSAL
Aditya KuskoIndiaIoni Bowcher RENEWAL
Johnson SergiBrazilBernardo Dominic RENEWAL
Maisha RulapaughJapanOnyama Limba RENEWAL
Clifford RimBrazilAsiya Javayant NEGOTIATION
Darci PoquetteCanadaXuxue Feng PROPOSAL
Tony FollerIndiaElwin Sharvill QUALIFIED
Ricardo GauchoSpainIvan Magalhaes PROPOSAL
Juan WieserAustraliaIoni Bowcher QUALIFIED
Alejandro PerinUnited KingdomXuxue Feng NEW
Ivar PaprockiCanadaIvan Magalhaes RENEWAL
Isabel BowleyIndiaElwin Sharvill NEGOTIATION
Emily WhobreyArgentinaElwin Sharvill QUALIFIED
Ivar PaprockiCanadaIoni Bowcher NEGOTIATION
Stacey MacleadItalyStephen Shaw QUALIFIED
Aika InouyeArgentinaElwin Sharvill QUALIFIED
Maisha RulapaughSpainElwin Sharvill NEGOTIATION
Adams MorascaFranceIvan Magalhaes NEW
Alejandro PerinAustraliaIvan Magalhaes QUALIFIED
Chavez BriddickBrazilAmy Elsner UNQUALIFIED
Murillo MaletJapanOnyama Limba UNQUALIFIED
Claire TollnerFranceStephen Shaw NEW
James ButtArgentinaBernardo Dominic NEW
Jones VocelkaJapanElwin Sharvill PROPOSAL
Salvatore StockhamCanadaAnna Fali RENEWAL
Leja CaldareraAustraliaElwin Sharvill NEGOTIATION
Mayumi KolmetzJapanAmy Elsner UNQUALIFIED
Clifford RimItalyIvan Magalhaes QUALIFIED
Kaitlin OstroskyCanadaOnyama Limba PROPOSAL
Tony FollerAustraliaElwin Sharvill RENEWAL
Horizontal
NameCountryRepresentativeStatus
Ashley DoeUnited KingdomXuxue Feng PROPOSAL
Aika InouyeBrazilIvan Magalhaes PROPOSAL
James ButtBrazilAsiya Javayant PROPOSAL
Cody SaylorsJapanAsiya Javayant QUALIFIED
Misaki RoysterSpainAmy Elsner NEW
Leja CaldareraBrazilXuxue Feng NEW
Maria MarrierGermanyOnyama Limba PROPOSAL
Faith GillianCanadaElwin Sharvill QUALIFIED
Aika InouyeArgentinaAsiya Javayant QUALIFIED
Ricardo GauchoIndiaElwin Sharvill PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Misaki RoysterUnited Kingdom2026-03-28Feiner Bros NEGOTIATION13Asiya Javayant
1001Cody SaylorsGermany2026-04-05Printing Dimensions RENEWAL88Onyama Limba
1002Wickens NestleFrance2026-04-07Chapman, Ross E Esq PROPOSAL30Onyama Limba
1003Kaitlin OstroskyUnited Kingdom2026-04-22Chemel, James L Cpa RENEWAL40Anna Fali
1004Kadeem FlosiIndia2026-04-16Buckley Miller Wright RENEWAL80Amy Elsner
1005Alejandro PerinUnited Kingdom2026-04-16Morlong Associates QUALIFIED45Anna Fali
1006Jeanfrancois VenereFrance2026-04-23Rangoni Of Florence PROPOSAL98Ioni Bowcher
1007Izzy GarufiIndia2026-03-30Rousseaux, Michael Esq RENEWAL25Asiya Javayant
1008Tony FollerSpain2026-04-02Rousseaux, Michael Esq UNQUALIFIED17Asiya Javayant
1009Octavia MaletSpain2026-04-20Rangoni Of Florence UNQUALIFIED61Asiya Javayant
1010Jones VocelkaAustralia2026-04-22Rangoni Of Florence UNQUALIFIED25Anna Fali
1011Ashley DoeJapan2026-03-29Morlong Associates NEGOTIATION34Amy Elsner
1012Aika InouyeFrance2026-04-12King, Christopher A Esq RENEWAL59Bernardo Dominic
1013Jennifer AmigonArgentina2026-04-07Truhlar And Truhlar Attys RENEWAL6Asiya Javayant
1014Mayumi KolmetzArgentina2026-04-05Rangoni Of Florence UNQUALIFIED75Xuxue Feng
1015Nicolas IturbideCanada2026-04-04King, Christopher A Esq UNQUALIFIED81Ivan Magalhaes
1016Wickens NestleSpain2026-04-19Truhlar And Truhlar Attys UNQUALIFIED59Ivan Magalhaes
1017Maisha RulapaughRussia2026-04-05Chanay, Jeffrey A Esq RENEWAL60Ivan Magalhaes
1018Costa DilliardAustralia2026-03-27Benton, John B Jr UNQUALIFIED30Elwin Sharvill
1019Morrow RutaAustralia2026-04-08Chemel, James L Cpa UNQUALIFIED89Xuxue Feng
1020Darci PoquetteArgentina2026-04-04Chapman, Ross E Esq QUALIFIED22Elwin Sharvill
1021Jennifer AmigonFrance2026-04-02Benton, John B Jr RENEWAL0Asiya Javayant
1022Mujtaba NickaJapan2026-04-18Chapman, Ross E Esq NEGOTIATION31Xuxue Feng
1023Arvin AlbaresItaly2026-04-10Chemel, James L Cpa RENEWAL52Xuxue Feng
1024Faith GillianCanada2026-04-21Truhlar And Truhlar Attys RENEWAL59Xuxue Feng
1025Arvin AlbaresFrance2026-04-01Morlong Associates RENEWAL1Ioni Bowcher
1026Jeanfrancois VenereFrance2026-04-20Rousseaux, Michael Esq PROPOSAL55Xuxue Feng
1027Juan WieserFrance2026-04-03Feiner Bros NEW56Asiya Javayant
1028Izzy GarufiBrazil2026-04-07Benton, John B Jr UNQUALIFIED68Ioni Bowcher
1029Munro FerenczGermany2026-04-18Dorl, James J Esq RENEWAL57Ivan Magalhaes
1030Faith GillianJapan2026-04-21King, Christopher A Esq RENEWAL54Xuxue Feng
1031Antonio CaudyBrazil2026-04-16Chemel, James L Cpa QUALIFIED14Onyama Limba
1032Wickens NestleCanada2026-04-22King, Christopher A Esq RENEWAL14Onyama Limba
1033Aika InouyeSpain2026-03-29Chemel, James L Cpa PROPOSAL16Anna Fali
1034Misaki RoysterJapan2026-04-13Feiner Bros UNQUALIFIED34Xuxue Feng
1035Jones VocelkaArgentina2026-04-06Printing Dimensions NEW90Asiya Javayant
1036Cody SaylorsCanada2026-03-31Buckley Miller Wright QUALIFIED16Ivan Magalhaes
1037Morrow RutaFrance2026-03-28Rousseaux, Michael Esq QUALIFIED97Xuxue Feng
1038Juan WieserRussia2026-04-23King, Christopher A Esq NEGOTIATION20Asiya Javayant
1039Deepesh ChuiGermany2026-04-22King, Christopher A Esq UNQUALIFIED73Onyama Limba
1040Ashley DoeUnited Kingdom2026-04-13King, Christopher A Esq NEW1Elwin Sharvill
1041Jeanfrancois VenereAustralia2026-03-31Truhlar And Truhlar Attys RENEWAL78Onyama Limba
1042Aditya KuskoCanada2026-04-01Benton, John B Jr NEGOTIATION89Ivan Magalhaes
1043Morrow RutaIndia2026-04-15Dorl, James J Esq UNQUALIFIED92Ioni Bowcher
1044Costa DilliardUnited Kingdom2026-04-08Rousseaux, Michael Esq NEGOTIATION89Anna Fali
1045Kadeem FlosiFrance2026-04-20Printing Dimensions NEGOTIATION29Onyama Limba
1046Johnson SergiGermany2026-03-30Truhlar And Truhlar Attys UNQUALIFIED98Anna Fali
1047Maisha RulapaughUnited Kingdom2026-04-08Printing Dimensions NEGOTIATION93Anna Fali
1048Jennifer AmigonJapan2026-04-05Rangoni Of Florence NEGOTIATION34Asiya Javayant
1049Cody SaylorsCanada2026-04-05Chanay, Jeffrey A Esq UNQUALIFIED35Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Julie StensethBrazilStephen Shaw PROPOSAL
Ivar PaprockiItalyAsiya Javayant RENEWAL
Faith GillianRussiaStephen Shaw PROPOSAL
Smith GlickUnited KingdomIoni Bowcher NEW
Salvatore StockhamJapanIvan Magalhaes QUALIFIED
Munro FerenczBrazilElwin Sharvill NEW
Claire TollnerFranceAmy Elsner RENEWAL
Wickens NestleUnited KingdomIvan Magalhaes PROPOSAL
Smith GlickBrazilXuxue Feng NEW
Ashley DoeRussiaAmy Elsner RENEWAL
Clifford RimSpainAnna Fali UNQUALIFIED
Darci PoquetteSpainBernardo Dominic QUALIFIED
Ashley DoeIndiaOnyama Limba PROPOSAL
Antonio CaudyFranceAsiya Javayant PROPOSAL
David DarakjyArgentinaStephen Shaw NEGOTIATION
Greenwood BologniaArgentinaStephen Shaw UNQUALIFIED
Munro FerenczSpainStephen Shaw PROPOSAL
Darci PoquetteFranceAsiya Javayant QUALIFIED
Munro FerenczGermanyAmy Elsner NEGOTIATION
James ButtJapanAsiya Javayant PROPOSAL
Mayumi KolmetzArgentinaOnyama Limba NEW
Francesco ShinkoUnited KingdomAmy Elsner QUALIFIED
Nicolas IturbideRussiaAnna Fali QUALIFIED
Julie StensethAustraliaElwin Sharvill NEGOTIATION
Ivar PaprockiGermanyXuxue Feng NEGOTIATION
Misaki RoysterBrazilElwin Sharvill QUALIFIED
Rodrigues CampainArgentinaXuxue Feng UNQUALIFIED
Claire TollnerSpainElwin Sharvill NEGOTIATION
Leon OldroydArgentinaStephen Shaw QUALIFIED
Kadeem FlosiAustraliaStephen Shaw RENEWAL
Aika InouyeSpainAmy Elsner NEW
Ashley DoeItalyStephen Shaw PROPOSAL
Tony FollerArgentinaIoni Bowcher QUALIFIED
Nicolas IturbideSpainAsiya Javayant QUALIFIED
Nicolas IturbideAustraliaXuxue Feng QUALIFIED
Juan WieserRussiaAmy Elsner RENEWAL
Arvin AlbaresItalyIvan Magalhaes QUALIFIED
Octavia MaletUnited KingdomIoni Bowcher QUALIFIED
Arvin AlbaresFranceElwin Sharvill NEGOTIATION
Silvio SlusarskiFranceAsiya Javayant QUALIFIED
Morrow RutaRussiaAsiya Javayant NEW
Claire TollnerRussiaBernardo Dominic RENEWAL
Izzy GarufiAustraliaBernardo Dominic NEGOTIATION
Salvatore StockhamAustraliaStephen Shaw UNQUALIFIED
Deepesh ChuiSpainAmy Elsner PROPOSAL
Jefferson SchemmerBrazilAmy Elsner PROPOSAL
Alejandro PerinUnited KingdomStephen Shaw NEGOTIATION
Aika InouyeRussiaStephen Shaw QUALIFIED
Claire TollnerBrazilElwin Sharvill RENEWAL
Tony FollerArgentinaBernardo Dominic UNQUALIFIED
Frozen Columns
Name
Ivar Paprocki
Ashley Doe
Aditya Kusko
Misaki Royster
Juan Wieser
Jennifer Amigon
Sinclair Waycott
Jones Vocelka
James Butt
Salvatore Stockham
Jefferson Schemmer
Faith Gillian
Mujtaba Nicka
Aruna Figeroa
Julie Stenseth
Cody Saylors
Nicolas Iturbide
Adams Morasca
Mayumi Kolmetz
Leon Oldroyd
Leon Oldroyd
Mayumi Kolmetz
Munro Ferencz
Greenwood Bolognia
Isabel Bowley
Isabel Bowley
Isabel Bowley
Smith Glick
Morrow Ruta
Jefferson Schemmer
Claire Tollner
Antonio Caudy
Silvio Slusarski
Misaki Royster
Maria Marrier
Munro Ferencz
Claire Tollner
Rodrigues Campain
Maria Marrier
James Butt
Jeanfrancois Venere
Cody Saylors
Emily Whobrey
Nicolas Iturbide
Leon Oldroyd
Kadeem Flosi
Ivar Paprocki
Cody Saylors
Aruna Figeroa
Deepesh Chui
IdCountryDate
1000Spain2026-04-21
1001Canada2026-04-13
1002India2026-04-15
1003Italy2026-04-03
1004Italy2026-04-03
1005Brazil2026-04-18
1006Spain2026-04-04
1007Russia2026-04-08
1008Australia2026-04-20
1009Argentina2026-04-07
1010India2026-04-18
1011Argentina2026-04-01
1012Russia2026-04-18
1013United Kingdom2026-04-09
1014Germany2026-04-15
1015Canada2026-04-20
1016Russia2026-04-18
1017Argentina2026-04-09
1018Spain2026-04-19
1019Japan2026-04-01
1020Brazil2026-04-08
1021United Kingdom2026-04-22
1022Brazil2026-04-20
1023Italy2026-03-28
1024Russia2026-04-04
1025Spain2026-03-31
1026United Kingdom2026-04-16
1027Germany2026-04-04
1028France2026-04-03
1029India2026-03-30
1030Italy2026-04-03
1031Russia2026-04-16
1032United Kingdom2026-04-11
1033Australia2026-03-31
1034Argentina2026-04-18
1035Australia2026-04-08
1036United Kingdom2026-04-06
1037Russia2026-03-25
1038Russia2026-03-30
1039Brazil2026-03-31
1040Brazil2026-04-04
1041Brazil2026-04-15
1042Italy2026-04-11
1043Brazil2026-04-02
1044Italy2026-04-19
1045United Kingdom2026-04-07
1046Brazil2026-03-27
1047India2026-04-02
1048Argentina2026-04-08
1049Russia2026-04-05

On-Demand Data

NameIdCountryDate
Aditya Kusko1000Spain2026-04-03
Ashley Doe1001Italy2026-04-07
Rodrigues Campain1002Spain2026-04-16
Francesco Shinko1003India2026-04-09
Mujtaba Nicka1004Canada2026-04-19
Costa Dilliard1005Canada2026-04-16
Arvin Albares1006Brazil2026-04-15
Ivar Paprocki1007France2026-04-06
Maria Marrier1008Spain2026-04-08
Stacey Maclead1009Italy2026-04-20
Maria Marrier1010Japan2026-04-22
Emily Whobrey1011Spain2026-04-21
Francesco Shinko1012United Kingdom2026-04-23
Juan Wieser1013Spain2026-04-18
Rodrigues Campain1014Russia2026-04-09
Mayumi Kolmetz1015Australia2026-04-20
Morrow Ruta1016United Kingdom2026-04-08
Isabel Bowley1017Brazil2026-04-11
Jennifer Amigon1018Russia2026-03-31
Chavez Briddick1019India2026-04-03
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Adams MorascaCanadaStephen Shaw QUALIFIED
Izzy GarufiAustraliaOnyama Limba UNQUALIFIED
Julie StensethArgentinaOnyama Limba QUALIFIED
Leja CaldareraGermanyAnna Fali NEW
Maisha RulapaughFranceXuxue Feng QUALIFIED
Aika InouyeArgentinaOnyama Limba QUALIFIED
Chavez BriddickJapanAsiya Javayant RENEWAL
Jennifer AmigonGermanyElwin Sharvill NEW
Silvio SlusarskiIndiaAnna Fali UNQUALIFIED
Aditya KuskoGermanyIoni Bowcher RENEWAL
James ButtAustraliaBernardo Dominic PROPOSAL
Greenwood BologniaItalyAnna Fali NEW
Rodrigues CampainItalyBernardo Dominic NEW
Cody SaylorsAustraliaStephen Shaw QUALIFIED
Ivar PaprockiSpainXuxue Feng NEW
Adams MorascaUnited KingdomAmy Elsner UNQUALIFIED
Murillo MaletItalyStephen Shaw QUALIFIED
Jennifer AmigonIndiaOnyama Limba NEGOTIATION
Mayumi KolmetzIndiaBernardo Dominic NEW
Clifford RimCanadaElwin Sharvill PROPOSAL
Jeanfrancois VenereItalyStephen Shaw QUALIFIED
Francesco ShinkoBrazilStephen Shaw UNQUALIFIED
James ButtGermanyAnna Fali RENEWAL
Nicolas IturbideJapanBernardo Dominic PROPOSAL
Rodrigues CampainIndiaXuxue Feng NEW
Izzy GarufiGermanyXuxue Feng NEW
Maria MarrierBrazilBernardo Dominic NEW
Darci PoquetteIndiaIvan Magalhaes NEW
Ricardo GauchoGermanyStephen Shaw UNQUALIFIED
Johnson SergiSpainAmy Elsner UNQUALIFIED
Kaitlin OstroskyRussiaAmy Elsner PROPOSAL
Leon OldroydRussiaStephen Shaw NEW
Kaitlin OstroskySpainIvan Magalhaes RENEWAL
Maisha RulapaughIndiaStephen Shaw PROPOSAL
Faith GillianFranceStephen Shaw NEGOTIATION
Adams MorascaUnited KingdomElwin Sharvill PROPOSAL
Leja CaldareraFranceIoni Bowcher RENEWAL
Ivar PaprockiAustraliaIoni Bowcher NEGOTIATION
Murillo MaletUnited KingdomXuxue Feng NEW
Isabel BowleyArgentinaStephen Shaw NEGOTIATION

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