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
Silvio SlusarskiArgentinaIvan Magalhaes NEW
Johnson SergiItalyStephen Shaw QUALIFIED
Jeanfrancois VenereItalyIoni Bowcher RENEWAL
Darci PoquetteJapanIoni Bowcher PROPOSAL
Tony FollerIndiaIoni Bowcher QUALIFIED
Tony FollerJapanAsiya Javayant NEW
Wickens NestleJapanIoni Bowcher NEW
Ivar PaprockiSpainStephen Shaw QUALIFIED
Misaki RoysterSpainBernardo Dominic PROPOSAL
Kaitlin OstroskyAustraliaBernardo Dominic UNQUALIFIED
Mayumi KolmetzBrazilXuxue Feng NEGOTIATION
James ButtItalyStephen Shaw QUALIFIED
Cody SaylorsCanadaStephen Shaw QUALIFIED
Adams MorascaArgentinaBernardo Dominic NEW
Juan WieserRussiaXuxue Feng NEGOTIATION
Jennifer AmigonArgentinaOnyama Limba NEW
Nicolas IturbideAustraliaOnyama Limba NEW
Darci PoquetteJapanBernardo Dominic PROPOSAL
Deepesh ChuiArgentinaAnna Fali QUALIFIED
Antonio CaudyIndiaAmy Elsner QUALIFIED
Octavia MaletSpainAsiya Javayant NEW
David DarakjyJapanElwin Sharvill NEGOTIATION
Clifford RimCanadaXuxue Feng NEGOTIATION
Emily WhobreyCanadaElwin Sharvill NEGOTIATION
David DarakjyAustraliaStephen Shaw RENEWAL
Misaki RoysterJapanElwin Sharvill PROPOSAL
Julie StensethFranceStephen Shaw NEGOTIATION
Adams MorascaBrazilBernardo Dominic NEGOTIATION
Jefferson SchemmerRussiaAmy Elsner NEGOTIATION
Mujtaba NickaJapanStephen Shaw NEGOTIATION
Silvio SlusarskiSpainElwin Sharvill NEW
Wickens NestleArgentinaXuxue Feng PROPOSAL
Juan WieserAustraliaAmy Elsner NEGOTIATION
Silvio SlusarskiGermanyElwin Sharvill PROPOSAL
Leja CaldareraJapanAsiya Javayant QUALIFIED
Leja CaldareraRussiaIvan Magalhaes NEW
Aika InouyeSpainIvan Magalhaes QUALIFIED
Darci PoquetteFranceIoni Bowcher PROPOSAL
Silvio SlusarskiIndiaElwin Sharvill UNQUALIFIED
Jeanfrancois VenereRussiaStephen Shaw QUALIFIED
Morrow RutaItalyElwin Sharvill NEW
Emily WhobreySpainOnyama Limba QUALIFIED
Isabel BowleySpainBernardo Dominic UNQUALIFIED
Wickens NestleSpainIvan Magalhaes NEGOTIATION
Morrow RutaBrazilXuxue Feng UNQUALIFIED
Kaitlin OstroskyRussiaIvan Magalhaes QUALIFIED
Murillo MaletCanadaStephen Shaw NEW
Deepesh ChuiIndiaIoni Bowcher QUALIFIED
Emily WhobreyAustraliaAnna Fali NEW
Maisha RulapaughIndiaIvan Magalhaes RENEWAL
Horizontal
NameCountryRepresentativeStatus
Darci PoquetteAustraliaBernardo Dominic NEGOTIATION
Munro FerenczArgentinaXuxue Feng NEGOTIATION
Adams MorascaArgentinaIvan Magalhaes PROPOSAL
Emily WhobreyCanadaOnyama Limba NEGOTIATION
Salvatore StockhamGermanyAsiya Javayant NEW
Cody SaylorsGermanyBernardo Dominic NEW
Ricardo GauchoJapanBernardo Dominic RENEWAL
Johnson SergiSpainAmy Elsner QUALIFIED
Ivar PaprockiRussiaElwin Sharvill UNQUALIFIED
Maisha RulapaughItalyAsiya Javayant RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Cody SaylorsAustralia2025-10-07Feltz Printing Service RENEWAL54Onyama Limba
1001Ashley DoeBrazil2025-10-13Feiner Bros PROPOSAL65Bernardo Dominic
1002Silvio SlusarskiArgentina2025-10-17Rangoni Of Florence RENEWAL88Elwin Sharvill
1003Octavia MaletJapan2025-09-29Chemel, James L Cpa PROPOSAL77Ioni Bowcher
1004Stacey MacleadIndia2025-10-11Chemel, James L Cpa QUALIFIED32Asiya Javayant
1005Kadeem FlosiIndia2025-10-06Benton, John B Jr UNQUALIFIED36Stephen Shaw
1006Faith GillianAustralia2025-10-13Benton, John B Jr PROPOSAL54Xuxue Feng
1007Jones VocelkaArgentina2025-10-12Rousseaux, Michael Esq NEW0Ivan Magalhaes
1008Silvio SlusarskiIndia2025-10-18Truhlar And Truhlar Attys NEGOTIATION80Onyama Limba
1009Alejandro PerinGermany2025-10-18King, Christopher A Esq QUALIFIED76Anna Fali
1010James ButtAustralia2025-10-02Buckley Miller Wright UNQUALIFIED61Elwin Sharvill
1011James ButtIndia2025-10-02Commercial Press QUALIFIED50Stephen Shaw
1012Mayumi KolmetzRussia2025-09-28King, Christopher A Esq NEW47Ioni Bowcher
1013Kadeem FlosiFrance2025-10-13Truhlar And Truhlar Attys RENEWAL74Onyama Limba
1014Izzy GarufiArgentina2025-09-27Dorl, James J Esq RENEWAL57Amy Elsner
1015Salvatore StockhamSpain2025-10-12Dorl, James J Esq PROPOSAL83Asiya Javayant
1016Misaki RoysterAustralia2025-09-23Feltz Printing Service NEW74Elwin Sharvill
1017Maisha RulapaughSpain2025-10-07Printing Dimensions PROPOSAL58Stephen Shaw
1018Ivar PaprockiBrazil2025-09-25Commercial Press PROPOSAL1Xuxue Feng
1019Jeanfrancois VenereCanada2025-10-06Chapman, Ross E Esq QUALIFIED37Amy Elsner
1020Jefferson SchemmerBrazil2025-10-10Morlong Associates NEGOTIATION9Amy Elsner
1021Nicolas IturbideJapan2025-09-22Truhlar And Truhlar Attys NEW36Amy Elsner
1022Antonio CaudyItaly2025-10-04Rangoni Of Florence UNQUALIFIED53Asiya Javayant
1023Munro FerenczFrance2025-10-02Chanay, Jeffrey A Esq QUALIFIED71Elwin Sharvill
1024Julie StensethIndia2025-10-10Benton, John B Jr NEW64Elwin Sharvill
1025Jefferson SchemmerIndia2025-09-26Printing Dimensions RENEWAL32Onyama Limba
1026Greenwood BologniaUnited Kingdom2025-09-23Chemel, James L Cpa PROPOSAL76Asiya Javayant
1027Wickens NestleGermany2025-10-15Buckley Miller Wright NEW53Ivan Magalhaes
1028Octavia MaletBrazil2025-10-04Chanay, Jeffrey A Esq QUALIFIED61Amy Elsner
1029Faith GillianBrazil2025-10-03Feltz Printing Service NEW87Onyama Limba
1030Maria MarrierSpain2025-10-19Rousseaux, Michael Esq UNQUALIFIED8Bernardo Dominic
1031Maria MarrierArgentina2025-10-19King, Christopher A Esq UNQUALIFIED21Amy Elsner
1032Mujtaba NickaIndia2025-09-23Rousseaux, Michael Esq PROPOSAL69Xuxue Feng
1033Stacey MacleadUnited Kingdom2025-10-08Printing Dimensions RENEWAL27Xuxue Feng
1034Emily WhobreyJapan2025-09-25Buckley Miller Wright NEGOTIATION11Stephen Shaw
1035Rodrigues CampainIndia2025-10-05King, Christopher A Esq UNQUALIFIED52Asiya Javayant
1036Rodrigues CampainArgentina2025-10-20Benton, John B Jr QUALIFIED22Asiya Javayant
1037Jones VocelkaRussia2025-09-29Commercial Press QUALIFIED68Ivan Magalhaes
1038Darci PoquetteIndia2025-10-04Feiner Bros NEGOTIATION77Amy Elsner
1039Alejandro PerinArgentina2025-10-04King, Christopher A Esq UNQUALIFIED50Ivan Magalhaes
1040Salvatore StockhamGermany2025-10-11King, Christopher A Esq PROPOSAL92Ivan Magalhaes
1041Maria MarrierSpain2025-09-21Printing Dimensions UNQUALIFIED26Xuxue Feng
1042Alejandro PerinArgentina2025-10-14Benton, John B Jr NEGOTIATION21Xuxue Feng
1043Sinclair WaycottArgentina2025-10-02Buckley Miller Wright NEGOTIATION73Asiya Javayant
1044Isabel BowleyFrance2025-10-20Feiner Bros PROPOSAL30Anna Fali
1045Juan WieserUnited Kingdom2025-09-28Rangoni Of Florence PROPOSAL94Stephen Shaw
1046Juan WieserCanada2025-09-25Chapman, Ross E Esq NEGOTIATION66Bernardo Dominic
1047Faith GillianArgentina2025-10-18Rousseaux, Michael Esq NEGOTIATION97Stephen Shaw
1048Cody SaylorsItaly2025-10-15Feiner Bros NEW19Onyama Limba
1049Wickens NestleIndia2025-10-05Chapman, Ross E Esq NEGOTIATION37Xuxue Feng
Frozen Rows
NameCountryRepresentativeStatus
Claire TollnerIndiaElwin Sharvill NEGOTIATION
Tony FollerArgentinaAmy Elsner UNQUALIFIED
Morrow RutaUnited KingdomOnyama Limba PROPOSAL
Mayumi KolmetzGermanyAsiya Javayant UNQUALIFIED
Jeanfrancois VenereJapanBernardo Dominic PROPOSAL
Chavez BriddickSpainIoni Bowcher NEW
Emily WhobreyRussiaAnna Fali NEGOTIATION
Julie StensethCanadaOnyama Limba RENEWAL
Darci PoquetteIndiaElwin Sharvill QUALIFIED
Silvio SlusarskiCanadaXuxue Feng NEGOTIATION
Silvio SlusarskiJapanAnna Fali NEGOTIATION
Juan WieserItalyBernardo Dominic QUALIFIED
Faith GillianIndiaXuxue Feng RENEWAL
Arvin AlbaresItalyIvan Magalhaes UNQUALIFIED
Ivar PaprockiAustraliaBernardo Dominic RENEWAL
Maisha RulapaughCanadaIoni Bowcher NEW
Ashley DoeCanadaIvan Magalhaes NEGOTIATION
Jefferson SchemmerBrazilElwin Sharvill PROPOSAL
Aruna FigeroaSpainXuxue Feng UNQUALIFIED
Faith GillianJapanAnna Fali QUALIFIED
Nicolas IturbideCanadaElwin Sharvill RENEWAL
Ricardo GauchoBrazilElwin Sharvill PROPOSAL
Morrow RutaUnited KingdomOnyama Limba PROPOSAL
Clifford RimItalyIvan Magalhaes UNQUALIFIED
Chavez BriddickIndiaAsiya Javayant NEGOTIATION
Octavia MaletIndiaAsiya Javayant NEGOTIATION
Izzy GarufiFranceAsiya Javayant RENEWAL
Francesco ShinkoItalyAnna Fali QUALIFIED
James ButtRussiaIoni Bowcher RENEWAL
Munro FerenczItalyAsiya Javayant PROPOSAL
Maria MarrierCanadaIoni Bowcher UNQUALIFIED
Clifford RimFranceStephen Shaw NEW
Mayumi KolmetzGermanyIoni Bowcher UNQUALIFIED
Emily WhobreyJapanAmy Elsner QUALIFIED
Silvio SlusarskiArgentinaAnna Fali RENEWAL
Smith GlickUnited KingdomAnna Fali UNQUALIFIED
Misaki RoysterSpainAnna Fali PROPOSAL
Aditya KuskoUnited KingdomStephen Shaw QUALIFIED
Isabel BowleyUnited KingdomXuxue Feng NEGOTIATION
Aika InouyeGermanyIvan Magalhaes QUALIFIED
Maria MarrierBrazilIvan Magalhaes RENEWAL
Cody SaylorsRussiaElwin Sharvill UNQUALIFIED
Murillo MaletUnited KingdomElwin Sharvill NEGOTIATION
Costa DilliardUnited KingdomIvan Magalhaes RENEWAL
Juan WieserGermanyIvan Magalhaes QUALIFIED
Juan WieserFranceXuxue Feng UNQUALIFIED
Jefferson SchemmerFranceIoni Bowcher QUALIFIED
Aika InouyeFranceOnyama Limba UNQUALIFIED
David DarakjyUnited KingdomIoni Bowcher NEW
Faith GillianUnited KingdomStephen Shaw PROPOSAL
Frozen Columns
Name
Wickens Nestle
Ricardo Gaucho
Sinclair Waycott
Cody Saylors
Ivar Paprocki
Chavez Briddick
Aika Inouye
Misaki Royster
Aika Inouye
Antonio Caudy
Tony Foller
Murillo Malet
Faith Gillian
Octavia Malet
Faith Gillian
Nicolas Iturbide
Kaitlin Ostrosky
Misaki Royster
Murillo Malet
Aditya Kusko
Smith Glick
Kaitlin Ostrosky
Aruna Figeroa
Maisha Rulapaugh
Jones Vocelka
Aika Inouye
Murillo Malet
Murillo Malet
Emily Whobrey
Leja Caldarera
Silvio Slusarski
Kadeem Flosi
Mujtaba Nicka
Misaki Royster
Julie Stenseth
Cody Saylors
Deepesh Chui
Silvio Slusarski
Salvatore Stockham
Rodrigues Campain
Alejandro Perin
Jones Vocelka
Juan Wieser
Antonio Caudy
Nicolas Iturbide
Misaki Royster
Adams Morasca
Aruna Figeroa
Cody Saylors
Sinclair Waycott
IdCountryDate
1000France2025-09-26
1001Italy2025-10-04
1002Australia2025-09-23
1003Italy2025-09-21
1004Australia2025-10-06
1005United Kingdom2025-09-21
1006Brazil2025-09-30
1007Brazil2025-10-12
1008Italy2025-10-05
1009France2025-09-22
1010France2025-10-11
1011India2025-10-18
1012United Kingdom2025-09-27
1013Italy2025-10-19
1014Japan2025-10-11
1015Japan2025-10-11
1016United Kingdom2025-09-23
1017Italy2025-10-16
1018Canada2025-10-11
1019Australia2025-09-28
1020United Kingdom2025-09-23
1021France2025-09-29
1022Australia2025-10-16
1023Spain2025-10-03
1024Spain2025-10-07
1025Brazil2025-10-16
1026United Kingdom2025-10-14
1027Spain2025-10-15
1028Russia2025-10-04
1029Germany2025-09-27
1030Argentina2025-09-26
1031India2025-09-29
1032Australia2025-10-12
1033India2025-10-20
1034Argentina2025-09-25
1035Australia2025-10-11
1036Australia2025-09-24
1037Japan2025-09-28
1038India2025-10-18
1039Italy2025-10-16
1040Brazil2025-10-11
1041United Kingdom2025-10-15
1042Australia2025-10-06
1043Germany2025-09-24
1044Argentina2025-10-08
1045France2025-10-07
1046Argentina2025-10-01
1047India2025-09-26
1048Italy2025-10-01
1049Spain2025-09-23

On-Demand Data

NameIdCountryDate
Nicolas Iturbide1000Canada2025-09-21
Rodrigues Campain1001Australia2025-10-03
Deepesh Chui1002Italy2025-09-22
Jennifer Amigon1003Italy2025-09-29
Claire Tollner1004Brazil2025-10-10
Clifford Rim1005United Kingdom2025-10-20
Darci Poquette1006Japan2025-09-24
Mujtaba Nicka1007Argentina2025-10-10
Murillo Malet1008Argentina2025-09-28
Antonio Caudy1009Russia2025-10-11
Kaitlin Ostrosky1010Spain2025-09-24
Adams Morasca1011Spain2025-10-19
Leja Caldarera1012France2025-10-10
Deepesh Chui1013India2025-10-20
Cody Saylors1014Italy2025-10-16
Jones Vocelka1015Canada2025-09-29
Costa Dilliard1016France2025-09-29
Leja Caldarera1017India2025-10-17
Isabel Bowley1018Argentina2025-10-09
Ashley Doe1019Argentina2025-09-24
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Nicolas IturbideAustraliaAnna Fali UNQUALIFIED
Costa DilliardRussiaBernardo Dominic PROPOSAL
Antonio CaudySpainStephen Shaw PROPOSAL
Greenwood BologniaFranceAnna Fali NEGOTIATION
James ButtCanadaIoni Bowcher QUALIFIED
Murillo MaletSpainOnyama Limba RENEWAL
James ButtRussiaAmy Elsner RENEWAL
Darci PoquetteJapanStephen Shaw NEGOTIATION
Leon OldroydAustraliaElwin Sharvill NEW
Julie StensethUnited KingdomBernardo Dominic PROPOSAL
Alejandro PerinArgentinaAnna Fali QUALIFIED
Maria MarrierAustraliaXuxue Feng QUALIFIED
Misaki RoysterArgentinaIvan Magalhaes RENEWAL
Aruna FigeroaItalyStephen Shaw UNQUALIFIED
Clifford RimGermanyAnna Fali UNQUALIFIED
Clifford RimCanadaOnyama Limba RENEWAL
Smith GlickAustraliaStephen Shaw UNQUALIFIED
Aditya KuskoGermanyIoni Bowcher RENEWAL
Jefferson SchemmerCanadaStephen Shaw NEGOTIATION
Maisha RulapaughCanadaIvan Magalhaes NEGOTIATION
Morrow RutaSpainXuxue Feng PROPOSAL
Arvin AlbaresSpainAnna Fali PROPOSAL
Antonio CaudyFranceAnna Fali PROPOSAL
Salvatore StockhamCanadaElwin Sharvill QUALIFIED
Mayumi KolmetzCanadaBernardo Dominic UNQUALIFIED
Antonio CaudyBrazilIvan Magalhaes UNQUALIFIED
Mujtaba NickaUnited KingdomAmy Elsner UNQUALIFIED
Aruna FigeroaBrazilOnyama Limba NEGOTIATION
Johnson SergiItalyStephen Shaw PROPOSAL
Alejandro PerinBrazilIvan Magalhaes QUALIFIED
Costa DilliardUnited KingdomElwin Sharvill QUALIFIED
Octavia MaletArgentinaElwin Sharvill QUALIFIED
Jefferson SchemmerUnited KingdomIvan Magalhaes RENEWAL
Mujtaba NickaSpainIoni Bowcher UNQUALIFIED
Silvio SlusarskiAustraliaAnna Fali PROPOSAL
Claire TollnerGermanyIoni Bowcher QUALIFIED
Wickens NestleJapanElwin Sharvill UNQUALIFIED
Octavia MaletGermanyElwin Sharvill QUALIFIED
Stacey MacleadBrazilOnyama Limba UNQUALIFIED
Sinclair WaycottCanadaAsiya Javayant PROPOSAL

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