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
Johnson SergiSpainElwin Sharvill UNQUALIFIED
Leja CaldareraJapanAmy Elsner NEGOTIATION
Kaitlin OstroskyArgentinaOnyama Limba PROPOSAL
Nicolas IturbideCanadaIvan Magalhaes NEW
Alejandro PerinItalyAmy Elsner NEGOTIATION
Faith GillianSpainAnna Fali NEGOTIATION
Aruna FigeroaCanadaAsiya Javayant NEGOTIATION
Julie StensethBrazilBernardo Dominic PROPOSAL
Alejandro PerinRussiaIoni Bowcher QUALIFIED
Tony FollerFranceAmy Elsner QUALIFIED
Jennifer AmigonIndiaBernardo Dominic UNQUALIFIED
Wickens NestleRussiaIvan Magalhaes NEW
Maria MarrierJapanOnyama Limba UNQUALIFIED
Misaki RoysterFranceAnna Fali NEGOTIATION
Costa DilliardBrazilAmy Elsner PROPOSAL
Sinclair WaycottJapanIoni Bowcher RENEWAL
Munro FerenczArgentinaAmy Elsner PROPOSAL
Juan WieserJapanXuxue Feng RENEWAL
Cody SaylorsRussiaAmy Elsner NEGOTIATION
Deepesh ChuiArgentinaAnna Fali RENEWAL
Mujtaba NickaFranceStephen Shaw RENEWAL
Mujtaba NickaArgentinaAsiya Javayant NEW
Alejandro PerinSpainStephen Shaw NEW
Emily WhobreyUnited KingdomAmy Elsner NEW
Clifford RimGermanyAmy Elsner QUALIFIED
Deepesh ChuiGermanyAmy Elsner RENEWAL
Leon OldroydItalyAnna Fali PROPOSAL
Juan WieserAustraliaXuxue Feng RENEWAL
Tony FollerCanadaIvan Magalhaes QUALIFIED
Ivar PaprockiSpainAsiya Javayant QUALIFIED
Murillo MaletUnited KingdomStephen Shaw NEW
Jennifer AmigonUnited KingdomElwin Sharvill PROPOSAL
Clifford RimRussiaOnyama Limba NEW
Mujtaba NickaGermanyElwin Sharvill RENEWAL
Arvin AlbaresGermanyAsiya Javayant QUALIFIED
Aruna FigeroaJapanElwin Sharvill PROPOSAL
Faith GillianUnited KingdomOnyama Limba UNQUALIFIED
Greenwood BologniaGermanyIvan Magalhaes UNQUALIFIED
Maria MarrierSpainXuxue Feng NEGOTIATION
Nicolas IturbideBrazilXuxue Feng UNQUALIFIED
Maisha RulapaughItalyIoni Bowcher UNQUALIFIED
Jefferson SchemmerGermanyStephen Shaw RENEWAL
Aruna FigeroaCanadaIvan Magalhaes PROPOSAL
Sinclair WaycottArgentinaIoni Bowcher NEW
Izzy GarufiAustraliaAmy Elsner NEW
Rodrigues CampainRussiaStephen Shaw UNQUALIFIED
Alejandro PerinItalyIoni Bowcher UNQUALIFIED
Cody SaylorsSpainIvan Magalhaes UNQUALIFIED
Izzy GarufiIndiaIoni Bowcher PROPOSAL
Chavez BriddickUnited KingdomAsiya Javayant PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Smith GlickIndiaAnna Fali NEGOTIATION
Arvin AlbaresAustraliaIvan Magalhaes QUALIFIED
Tony FollerCanadaElwin Sharvill UNQUALIFIED
Nicolas IturbideIndiaAmy Elsner NEGOTIATION
Munro FerenczAustraliaBernardo Dominic UNQUALIFIED
Costa DilliardSpainIoni Bowcher NEW
Maria MarrierSpainAnna Fali RENEWAL
Darci PoquetteFranceOnyama Limba PROPOSAL
Ivar PaprockiArgentinaAsiya Javayant QUALIFIED
Jennifer AmigonArgentinaIoni Bowcher NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Stacey MacleadFrance2026-05-20Chapman, Ross E Esq RENEWAL16Xuxue Feng
1001Smith GlickAustralia2026-05-29Dorl, James J Esq NEGOTIATION36Asiya Javayant
1002Costa DilliardUnited Kingdom2026-06-06Commercial Press UNQUALIFIED14Anna Fali
1003Adams MorascaFrance2026-06-01Chapman, Ross E Esq PROPOSAL51Ivan Magalhaes
1004Francesco ShinkoBrazil2026-05-22Buckley Miller Wright QUALIFIED22Amy Elsner
1005James ButtArgentina2026-06-09Rangoni Of Florence UNQUALIFIED50Ivan Magalhaes
1006Adams MorascaBrazil2026-05-30Rangoni Of Florence RENEWAL6Amy Elsner
1007Nicolas IturbideCanada2026-05-17Feiner Bros NEW94Asiya Javayant
1008Ashley DoeSpain2026-06-05King, Christopher A Esq QUALIFIED11Amy Elsner
1009Jeanfrancois VenereRussia2026-05-27Chemel, James L Cpa UNQUALIFIED88Bernardo Dominic
1010Deepesh ChuiUnited Kingdom2026-05-16Chanay, Jeffrey A Esq RENEWAL67Amy Elsner
1011Mujtaba NickaSpain2026-06-09Printing Dimensions UNQUALIFIED33Ioni Bowcher
1012Kadeem FlosiGermany2026-05-24Printing Dimensions RENEWAL13Ioni Bowcher
1013Isabel BowleyAustralia2026-05-26Commercial Press RENEWAL91Ivan Magalhaes
1014Julie StensethBrazil2026-05-16Commercial Press QUALIFIED19Bernardo Dominic
1015Ivar PaprockiFrance2026-05-22Chapman, Ross E Esq NEGOTIATION4Xuxue Feng
1016Ashley DoeJapan2026-06-09Commercial Press NEW24Elwin Sharvill
1017Adams MorascaItaly2026-06-07Chemel, James L Cpa QUALIFIED91Amy Elsner
1018Tony FollerAustralia2026-05-30Commercial Press UNQUALIFIED58Xuxue Feng
1019Octavia MaletJapan2026-06-07King, Christopher A Esq PROPOSAL51Asiya Javayant
1020Munro FerenczItaly2026-05-21Chanay, Jeffrey A Esq RENEWAL48Elwin Sharvill
1021Clifford RimAustralia2026-06-06Printing Dimensions PROPOSAL31Bernardo Dominic
1022Juan WieserRussia2026-05-19Chanay, Jeffrey A Esq UNQUALIFIED75Anna Fali
1023Smith GlickSpain2026-06-03Feiner Bros QUALIFIED34Amy Elsner
1024Alejandro PerinAustralia2026-06-06Rousseaux, Michael Esq PROPOSAL42Bernardo Dominic
1025Jennifer AmigonAustralia2026-06-02Rousseaux, Michael Esq NEGOTIATION8Xuxue Feng
1026Aruna FigeroaItaly2026-06-08Rangoni Of Florence QUALIFIED28Asiya Javayant
1027Francesco ShinkoFrance2026-05-31Truhlar And Truhlar Attys UNQUALIFIED37Onyama Limba
1028Rodrigues CampainArgentina2026-05-25Chemel, James L Cpa RENEWAL40Bernardo Dominic
1029Isabel BowleyUnited Kingdom2026-05-18Dorl, James J Esq NEGOTIATION40Stephen Shaw
1030Emily WhobreyIndia2026-05-16Chapman, Ross E Esq QUALIFIED86Ivan Magalhaes
1031Claire TollnerItaly2026-05-15Commercial Press RENEWAL6Stephen Shaw
1032Octavia MaletIndia2026-06-01Feltz Printing Service PROPOSAL54Asiya Javayant
1033Ivar PaprockiIndia2026-05-31Rangoni Of Florence NEGOTIATION16Amy Elsner
1034Kaitlin OstroskyRussia2026-05-31Printing Dimensions QUALIFIED75Amy Elsner
1035Nicolas IturbideSpain2026-05-20Feiner Bros QUALIFIED0Ivan Magalhaes
1036Aika InouyeGermany2026-05-23Commercial Press NEW26Elwin Sharvill
1037Misaki RoysterAustralia2026-05-21Morlong Associates UNQUALIFIED9Amy Elsner
1038Octavia MaletUnited Kingdom2026-06-03Chemel, James L Cpa RENEWAL69Onyama Limba
1039Jeanfrancois VenereJapan2026-05-24Chapman, Ross E Esq NEGOTIATION17Bernardo Dominic
1040Silvio SlusarskiItaly2026-05-12Buckley Miller Wright NEGOTIATION34Anna Fali
1041Isabel BowleyCanada2026-05-13Truhlar And Truhlar Attys RENEWAL43Bernardo Dominic
1042Emily WhobreyItaly2026-06-03Benton, John B Jr UNQUALIFIED73Stephen Shaw
1043Mayumi KolmetzAustralia2026-05-19Feltz Printing Service NEW68Onyama Limba
1044Sinclair WaycottJapan2026-05-23Chanay, Jeffrey A Esq QUALIFIED16Onyama Limba
1045Octavia MaletItaly2026-05-22Dorl, James J Esq RENEWAL77Bernardo Dominic
1046Arvin AlbaresIndia2026-06-04Chanay, Jeffrey A Esq RENEWAL93Elwin Sharvill
1047Greenwood BologniaBrazil2026-05-28Chapman, Ross E Esq NEGOTIATION4Bernardo Dominic
1048Murillo MaletArgentina2026-05-31Rangoni Of Florence UNQUALIFIED44Anna Fali
1049Octavia MaletArgentina2026-06-02King, Christopher A Esq NEW62Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Leja CaldareraUnited KingdomElwin Sharvill QUALIFIED
Nicolas IturbideItalyStephen Shaw NEW
Aruna FigeroaIndiaElwin Sharvill QUALIFIED
Kaitlin OstroskyJapanStephen Shaw PROPOSAL
Kaitlin OstroskyAustraliaElwin Sharvill PROPOSAL
Mayumi KolmetzBrazilIvan Magalhaes RENEWAL
Maria MarrierGermanyOnyama Limba RENEWAL
Aika InouyeFranceBernardo Dominic NEGOTIATION
Kadeem FlosiUnited KingdomAsiya Javayant NEW
Tony FollerJapanElwin Sharvill UNQUALIFIED
Johnson SergiGermanyAmy Elsner UNQUALIFIED
Nicolas IturbideRussiaAnna Fali NEGOTIATION
Izzy GarufiItalyOnyama Limba RENEWAL
Salvatore StockhamBrazilAsiya Javayant QUALIFIED
Stacey MacleadGermanyAmy Elsner UNQUALIFIED
Adams MorascaJapanIoni Bowcher QUALIFIED
Alejandro PerinUnited KingdomElwin Sharvill UNQUALIFIED
Misaki RoysterFranceBernardo Dominic NEGOTIATION
Darci PoquetteIndiaAnna Fali NEW
Wickens NestleIndiaOnyama Limba NEW
Jennifer AmigonGermanyIvan Magalhaes RENEWAL
Mayumi KolmetzJapanElwin Sharvill QUALIFIED
Octavia MaletGermanyIvan Magalhaes NEGOTIATION
Aika InouyeAustraliaBernardo Dominic NEGOTIATION
Munro FerenczGermanyOnyama Limba NEW
Murillo MaletUnited KingdomBernardo Dominic QUALIFIED
Ashley DoeRussiaOnyama Limba NEW
Aika InouyeBrazilIvan Magalhaes RENEWAL
Jefferson SchemmerJapanIvan Magalhaes NEGOTIATION
Rodrigues CampainUnited KingdomStephen Shaw QUALIFIED
Juan WieserItalyAnna Fali RENEWAL
Adams MorascaArgentinaIvan Magalhaes PROPOSAL
Claire TollnerItalyXuxue Feng RENEWAL
Faith GillianUnited KingdomElwin Sharvill UNQUALIFIED
Silvio SlusarskiCanadaXuxue Feng RENEWAL
Deepesh ChuiSpainOnyama Limba PROPOSAL
Chavez BriddickJapanIoni Bowcher RENEWAL
Adams MorascaCanadaElwin Sharvill NEGOTIATION
Juan WieserJapanIoni Bowcher NEW
David DarakjyArgentinaElwin Sharvill RENEWAL
Antonio CaudyUnited KingdomIoni Bowcher UNQUALIFIED
Aika InouyeCanadaAsiya Javayant PROPOSAL
Mujtaba NickaArgentinaOnyama Limba NEGOTIATION
Isabel BowleyFranceOnyama Limba UNQUALIFIED
Salvatore StockhamJapanOnyama Limba PROPOSAL
Jennifer AmigonGermanyIoni Bowcher UNQUALIFIED
Mayumi KolmetzItalyOnyama Limba RENEWAL
Aditya KuskoAustraliaAsiya Javayant NEGOTIATION
Cody SaylorsItalyAsiya Javayant NEW
Alejandro PerinAustraliaAsiya Javayant QUALIFIED
Frozen Columns
Name
Murillo Malet
Jefferson Schemmer
Alejandro Perin
Antonio Caudy
Arvin Albares
Stacey Maclead
Kaitlin Ostrosky
Antonio Caudy
Aruna Figeroa
Maria Marrier
Antonio Caudy
Leon Oldroyd
Mayumi Kolmetz
Tony Foller
Jefferson Schemmer
Leja Caldarera
David Darakjy
Jefferson Schemmer
Wickens Nestle
Mayumi Kolmetz
Ivar Paprocki
Ashley Doe
Murillo Malet
Jennifer Amigon
Ivar Paprocki
Darci Poquette
Chavez Briddick
David Darakjy
Smith Glick
Juan Wieser
Salvatore Stockham
Julie Stenseth
Aika Inouye
Darci Poquette
Cody Saylors
Ivar Paprocki
Arvin Albares
Maria Marrier
Greenwood Bolognia
Clifford Rim
Izzy Garufi
Maria Marrier
Emily Whobrey
Stacey Maclead
Kadeem Flosi
Deepesh Chui
Maria Marrier
Mujtaba Nicka
Ricardo Gaucho
Kadeem Flosi
IdCountryDate
1000Germany2026-06-02
1001Japan2026-06-03
1002Germany2026-06-02
1003Brazil2026-05-12
1004Germany2026-05-27
1005Italy2026-05-31
1006Argentina2026-05-26
1007Russia2026-06-07
1008Argentina2026-06-04
1009India2026-06-09
1010Argentina2026-06-02
1011Russia2026-05-29
1012Japan2026-05-13
1013United Kingdom2026-06-01
1014Germany2026-05-29
1015Australia2026-05-17
1016India2026-05-19
1017Japan2026-06-03
1018Australia2026-05-12
1019Brazil2026-05-11
1020Australia2026-05-20
1021Russia2026-05-25
1022Russia2026-05-21
1023Spain2026-05-25
1024India2026-05-16
1025Germany2026-05-19
1026France2026-06-07
1027Japan2026-06-09
1028Japan2026-06-03
1029Australia2026-06-02
1030Spain2026-06-09
1031Spain2026-05-23
1032Argentina2026-05-12
1033Brazil2026-06-05
1034Germany2026-05-11
1035Italy2026-06-09
1036Italy2026-05-28
1037Germany2026-05-11
1038Japan2026-05-25
1039Japan2026-05-16
1040Canada2026-05-22
1041India2026-05-19
1042Canada2026-05-29
1043United Kingdom2026-06-06
1044Spain2026-06-03
1045France2026-05-22
1046Argentina2026-05-30
1047Australia2026-06-04
1048Canada2026-05-30
1049India2026-05-12

On-Demand Data

NameIdCountryDate
Aika Inouye1000Spain2026-05-17
Faith Gillian1001India2026-05-17
Leon Oldroyd1002United Kingdom2026-05-17
Maisha Rulapaugh1003Germany2026-06-03
Aruna Figeroa1004Brazil2026-05-23
Misaki Royster1005Russia2026-05-15
Izzy Garufi1006Canada2026-05-16
Isabel Bowley1007France2026-05-22
Jefferson Schemmer1008Spain2026-06-09
Aruna Figeroa1009Canada2026-05-29
Isabel Bowley1010Italy2026-05-30
Octavia Malet1011Australia2026-05-31
James Butt1012Russia2026-06-08
Sinclair Waycott1013Canada2026-05-26
Octavia Malet1014Russia2026-06-07
Jeanfrancois Venere1015Spain2026-06-05
Faith Gillian1016Japan2026-05-20
Salvatore Stockham1017Spain2026-05-17
Stacey Maclead1018Germany2026-06-05
Salvatore Stockham1019Spain2026-06-07
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jennifer AmigonItalyAmy Elsner RENEWAL
Tony FollerUnited KingdomXuxue Feng NEGOTIATION
Claire TollnerGermanyAmy Elsner RENEWAL
Antonio CaudyCanadaBernardo Dominic NEGOTIATION
Wickens NestleSpainAnna Fali RENEWAL
Emily WhobreyIndiaElwin Sharvill UNQUALIFIED
Ivar PaprockiAustraliaElwin Sharvill QUALIFIED
Salvatore StockhamBrazilOnyama Limba PROPOSAL
Mayumi KolmetzItalyIoni Bowcher NEGOTIATION
Jefferson SchemmerAustraliaXuxue Feng RENEWAL
Maria MarrierBrazilBernardo Dominic QUALIFIED
Jennifer AmigonArgentinaXuxue Feng PROPOSAL
Faith GillianIndiaOnyama Limba NEGOTIATION
Smith GlickIndiaOnyama Limba RENEWAL
Leja CaldareraGermanyIoni Bowcher RENEWAL
Rodrigues CampainCanadaOnyama Limba PROPOSAL
Izzy GarufiCanadaIvan Magalhaes QUALIFIED
Ivar PaprockiItalyAsiya Javayant PROPOSAL
Wickens NestleFranceAsiya Javayant NEGOTIATION
Jones VocelkaJapanAsiya Javayant NEW
Mayumi KolmetzSpainIoni Bowcher QUALIFIED
Faith GillianGermanyOnyama Limba RENEWAL
Salvatore StockhamItalyBernardo Dominic PROPOSAL
Aditya KuskoSpainAnna Fali QUALIFIED
Misaki RoysterItalyAnna Fali QUALIFIED
Darci PoquetteItalyElwin Sharvill QUALIFIED
Alejandro PerinFranceIoni Bowcher NEW
Alejandro PerinSpainAnna Fali NEGOTIATION
Leon OldroydItalyOnyama Limba QUALIFIED
Faith GillianGermanyBernardo Dominic UNQUALIFIED
Wickens NestleUnited KingdomXuxue Feng UNQUALIFIED
Jeanfrancois VenereBrazilAsiya Javayant RENEWAL
Morrow RutaJapanBernardo Dominic RENEWAL
Wickens NestleSpainIvan Magalhaes PROPOSAL
Misaki RoysterUnited KingdomOnyama Limba RENEWAL
James ButtItalyXuxue Feng NEW
Darci PoquetteArgentinaXuxue Feng UNQUALIFIED
Tony FollerItalyAnna Fali PROPOSAL
Mayumi KolmetzGermanyXuxue Feng RENEWAL
Izzy GarufiCanadaXuxue Feng 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>