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
Kadeem FlosiRussiaOnyama Limba QUALIFIED
Wickens NestleIndiaAmy Elsner QUALIFIED
Octavia MaletJapanIoni Bowcher RENEWAL
Munro FerenczSpainAnna Fali NEGOTIATION
Maria MarrierJapanAmy Elsner QUALIFIED
Ricardo GauchoArgentinaAmy Elsner PROPOSAL
Adams MorascaCanadaBernardo Dominic UNQUALIFIED
Aruna FigeroaUnited KingdomBernardo Dominic UNQUALIFIED
Misaki RoysterJapanBernardo Dominic PROPOSAL
Tony FollerIndiaOnyama Limba UNQUALIFIED
Jeanfrancois VenereBrazilStephen Shaw UNQUALIFIED
Murillo MaletRussiaOnyama Limba NEW
Jefferson SchemmerArgentinaElwin Sharvill UNQUALIFIED
Rodrigues CampainSpainAmy Elsner RENEWAL
Sinclair WaycottBrazilXuxue Feng PROPOSAL
Jeanfrancois VenereItalyElwin Sharvill QUALIFIED
Sinclair WaycottBrazilAmy Elsner UNQUALIFIED
Rodrigues CampainIndiaBernardo Dominic QUALIFIED
Silvio SlusarskiIndiaOnyama Limba RENEWAL
Jeanfrancois VenereUnited KingdomAsiya Javayant NEW
Kadeem FlosiItalyIoni Bowcher QUALIFIED
Munro FerenczAustraliaOnyama Limba PROPOSAL
Chavez BriddickCanadaAnna Fali NEGOTIATION
Antonio CaudyGermanyAmy Elsner RENEWAL
Faith GillianBrazilIoni Bowcher QUALIFIED
Jefferson SchemmerJapanAnna Fali RENEWAL
Cody SaylorsSpainBernardo Dominic NEGOTIATION
Salvatore StockhamBrazilAsiya Javayant UNQUALIFIED
Aruna FigeroaIndiaElwin Sharvill PROPOSAL
Jeanfrancois VenereRussiaStephen Shaw RENEWAL
Sinclair WaycottCanadaBernardo Dominic QUALIFIED
Claire TollnerCanadaBernardo Dominic PROPOSAL
Aruna FigeroaJapanXuxue Feng QUALIFIED
Adams MorascaFranceBernardo Dominic UNQUALIFIED
Smith GlickAustraliaAmy Elsner NEW
Tony FollerUnited KingdomXuxue Feng PROPOSAL
Smith GlickBrazilOnyama Limba NEGOTIATION
Chavez BriddickAustraliaXuxue Feng NEGOTIATION
Maria MarrierSpainXuxue Feng NEGOTIATION
James ButtItalyAmy Elsner NEW
Misaki RoysterIndiaStephen Shaw PROPOSAL
Mujtaba NickaJapanXuxue Feng NEW
Aika InouyeBrazilAnna Fali RENEWAL
Stacey MacleadRussiaIvan Magalhaes UNQUALIFIED
Johnson SergiIndiaAsiya Javayant RENEWAL
Wickens NestleSpainElwin Sharvill PROPOSAL
Ricardo GauchoAustraliaAnna Fali UNQUALIFIED
Ashley DoeFranceStephen Shaw RENEWAL
Mujtaba NickaJapanStephen Shaw RENEWAL
Ashley DoeGermanyIoni Bowcher NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Ashley DoeRussiaAnna Fali NEGOTIATION
Darci PoquetteFranceAsiya Javayant PROPOSAL
Izzy GarufiCanadaElwin Sharvill NEGOTIATION
Misaki RoysterItalyAnna Fali PROPOSAL
Mujtaba NickaFranceIvan Magalhaes PROPOSAL
Alejandro PerinBrazilAsiya Javayant NEW
Clifford RimArgentinaXuxue Feng PROPOSAL
David DarakjyJapanStephen Shaw NEW
Faith GillianCanadaElwin Sharvill NEW
Ricardo GauchoJapanIvan Magalhaes PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maria MarrierJapan2026-05-15Chanay, Jeffrey A Esq QUALIFIED33Onyama Limba
1001James ButtIndia2026-05-12Benton, John B Jr QUALIFIED12Ivan Magalhaes
1002Misaki RoysterRussia2026-05-18Chemel, James L Cpa QUALIFIED46Bernardo Dominic
1003Aruna FigeroaSpain2026-06-02Rousseaux, Michael Esq PROPOSAL89Asiya Javayant
1004Leja CaldareraIndia2026-05-27Benton, John B Jr UNQUALIFIED6Elwin Sharvill
1005Munro FerenczArgentina2026-05-06Rousseaux, Michael Esq UNQUALIFIED88Xuxue Feng
1006Greenwood BologniaUnited Kingdom2026-05-26Truhlar And Truhlar Attys NEW74Onyama Limba
1007Claire TollnerAustralia2026-05-12King, Christopher A Esq PROPOSAL3Bernardo Dominic
1008Munro FerenczFrance2026-05-13Benton, John B Jr QUALIFIED6Anna Fali
1009David DarakjyBrazil2026-05-14Rousseaux, Michael Esq QUALIFIED62Bernardo Dominic
1010Aruna FigeroaArgentina2026-05-30Chemel, James L Cpa PROPOSAL95Stephen Shaw
1011Smith GlickRussia2026-05-13Rangoni Of Florence RENEWAL69Onyama Limba
1012Kaitlin OstroskyJapan2026-05-26Buckley Miller Wright NEGOTIATION44Asiya Javayant
1013Aika InouyeCanada2026-05-15King, Christopher A Esq NEGOTIATION80Xuxue Feng
1014Jones VocelkaIndia2026-05-09Commercial Press UNQUALIFIED38Asiya Javayant
1015Izzy GarufiJapan2026-05-22Buckley Miller Wright NEGOTIATION58Xuxue Feng
1016Munro FerenczGermany2026-05-05Commercial Press QUALIFIED12Stephen Shaw
1017Maisha RulapaughArgentina2026-05-28Benton, John B Jr PROPOSAL69Stephen Shaw
1018James ButtAustralia2026-05-21Rangoni Of Florence PROPOSAL67Ioni Bowcher
1019Stacey MacleadUnited Kingdom2026-05-15Rangoni Of Florence NEW9Xuxue Feng
1020Jennifer AmigonBrazil2026-06-02Rousseaux, Michael Esq UNQUALIFIED27Asiya Javayant
1021Isabel BowleyRussia2026-05-16Feltz Printing Service RENEWAL61Stephen Shaw
1022Jones VocelkaItaly2026-05-12Buckley Miller Wright QUALIFIED60Bernardo Dominic
1023Maisha RulapaughGermany2026-05-29Benton, John B Jr NEGOTIATION48Onyama Limba
1024Arvin AlbaresBrazil2026-05-16Dorl, James J Esq UNQUALIFIED23Anna Fali
1025Francesco ShinkoFrance2026-05-28Truhlar And Truhlar Attys NEW7Asiya Javayant
1026Munro FerenczFrance2026-05-05Chanay, Jeffrey A Esq RENEWAL10Elwin Sharvill
1027Mayumi KolmetzUnited Kingdom2026-05-08Printing Dimensions UNQUALIFIED96Elwin Sharvill
1028Jeanfrancois VenereIndia2026-05-18Feltz Printing Service RENEWAL33Elwin Sharvill
1029Izzy GarufiFrance2026-05-23Rousseaux, Michael Esq UNQUALIFIED36Elwin Sharvill
1030Deepesh ChuiRussia2026-05-26Chemel, James L Cpa PROPOSAL14Bernardo Dominic
1031Claire TollnerCanada2026-06-01Dorl, James J Esq RENEWAL44Anna Fali
1032Misaki RoysterArgentina2026-05-04Commercial Press NEW55Ivan Magalhaes
1033Chavez BriddickRussia2026-05-23Rousseaux, Michael Esq NEW80Ioni Bowcher
1034David DarakjyUnited Kingdom2026-05-20Commercial Press UNQUALIFIED88Stephen Shaw
1035Francesco ShinkoIndia2026-06-02Chemel, James L Cpa NEGOTIATION27Amy Elsner
1036Antonio CaudyGermany2026-05-05Chanay, Jeffrey A Esq QUALIFIED27Stephen Shaw
1037Julie StensethGermany2026-05-24Feiner Bros NEGOTIATION27Stephen Shaw
1038Ricardo GauchoAustralia2026-06-02Buckley Miller Wright NEGOTIATION85Xuxue Feng
1039Faith GillianUnited Kingdom2026-05-19Printing Dimensions UNQUALIFIED20Ioni Bowcher
1040Jeanfrancois VenereIndia2026-05-19Truhlar And Truhlar Attys NEW85Elwin Sharvill
1041Ashley DoeItaly2026-05-27Buckley Miller Wright NEGOTIATION51Xuxue Feng
1042Chavez BriddickCanada2026-05-19Feltz Printing Service RENEWAL23Asiya Javayant
1043Tony FollerJapan2026-05-12King, Christopher A Esq UNQUALIFIED34Ivan Magalhaes
1044Johnson SergiArgentina2026-05-05Truhlar And Truhlar Attys NEW18Onyama Limba
1045Faith GillianAustralia2026-05-15Chapman, Ross E Esq PROPOSAL33Ioni Bowcher
1046Antonio CaudyGermany2026-05-12Rousseaux, Michael Esq NEGOTIATION78Anna Fali
1047Maisha RulapaughGermany2026-05-12Printing Dimensions NEW97Stephen Shaw
1048Francesco ShinkoItaly2026-05-08Chapman, Ross E Esq NEGOTIATION70Stephen Shaw
1049Claire TollnerJapan2026-06-02Chapman, Ross E Esq QUALIFIED34Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Jefferson SchemmerAustraliaAnna Fali NEW
Emily WhobreyJapanXuxue Feng QUALIFIED
Munro FerenczArgentinaBernardo Dominic NEW
Alejandro PerinCanadaAsiya Javayant NEGOTIATION
Wickens NestleGermanyOnyama Limba PROPOSAL
Ricardo GauchoAustraliaXuxue Feng UNQUALIFIED
Jefferson SchemmerArgentinaXuxue Feng NEW
Aika InouyeArgentinaAsiya Javayant RENEWAL
Nicolas IturbideGermanyAsiya Javayant QUALIFIED
Silvio SlusarskiGermanyAsiya Javayant NEW
Ricardo GauchoSpainIvan Magalhaes RENEWAL
Emily WhobreyGermanyIvan Magalhaes NEGOTIATION
Jeanfrancois VenereGermanyIoni Bowcher QUALIFIED
Aruna FigeroaFranceStephen Shaw UNQUALIFIED
Juan WieserBrazilBernardo Dominic NEGOTIATION
Rodrigues CampainIndiaXuxue Feng RENEWAL
Arvin AlbaresAustraliaXuxue Feng QUALIFIED
Octavia MaletUnited KingdomBernardo Dominic RENEWAL
Sinclair WaycottAustraliaIvan Magalhaes UNQUALIFIED
Deepesh ChuiIndiaBernardo Dominic NEW
Jennifer AmigonBrazilStephen Shaw QUALIFIED
Wickens NestleFranceBernardo Dominic NEW
Sinclair WaycottIndiaBernardo Dominic QUALIFIED
Leon OldroydJapanElwin Sharvill NEGOTIATION
Morrow RutaIndiaXuxue Feng UNQUALIFIED
Ricardo GauchoBrazilAnna Fali PROPOSAL
Mayumi KolmetzBrazilStephen Shaw QUALIFIED
James ButtBrazilAnna Fali RENEWAL
Jones VocelkaCanadaXuxue Feng RENEWAL
Adams MorascaCanadaIoni Bowcher QUALIFIED
Octavia MaletBrazilAsiya Javayant QUALIFIED
Ashley DoeJapanIvan Magalhaes PROPOSAL
Ivar PaprockiCanadaBernardo Dominic PROPOSAL
Isabel BowleyBrazilIoni Bowcher NEW
Aruna FigeroaArgentinaOnyama Limba NEGOTIATION
Adams MorascaGermanyIoni Bowcher NEW
Jones VocelkaBrazilXuxue Feng RENEWAL
Aika InouyeRussiaBernardo Dominic UNQUALIFIED
Cody SaylorsAustraliaAnna Fali NEW
Deepesh ChuiSpainElwin Sharvill NEW
Morrow RutaGermanyIoni Bowcher UNQUALIFIED
Ricardo GauchoAustraliaIvan Magalhaes PROPOSAL
Jeanfrancois VenereUnited KingdomElwin Sharvill NEGOTIATION
Stacey MacleadAustraliaAnna Fali UNQUALIFIED
David DarakjyRussiaElwin Sharvill PROPOSAL
Julie StensethSpainStephen Shaw QUALIFIED
Adams MorascaIndiaAmy Elsner NEW
Jones VocelkaCanadaIvan Magalhaes UNQUALIFIED
Aika InouyeRussiaAsiya Javayant QUALIFIED
Cody SaylorsBrazilOnyama Limba NEW
Frozen Columns
Name
Smith Glick
Deepesh Chui
Stacey Maclead
Octavia Malet
Kaitlin Ostrosky
Silvio Slusarski
James Butt
Murillo Malet
Juan Wieser
Maisha Rulapaugh
Julie Stenseth
Adams Morasca
Sinclair Waycott
Isabel Bowley
Salvatore Stockham
Kaitlin Ostrosky
Aika Inouye
Juan Wieser
Silvio Slusarski
Stacey Maclead
Morrow Ruta
Kaitlin Ostrosky
Jones Vocelka
Kaitlin Ostrosky
Ricardo Gaucho
Misaki Royster
Isabel Bowley
Darci Poquette
Octavia Malet
James Butt
Kadeem Flosi
Stacey Maclead
Antonio Caudy
Octavia Malet
Rodrigues Campain
Aditya Kusko
David Darakjy
Stacey Maclead
Deepesh Chui
Chavez Briddick
Stacey Maclead
Wickens Nestle
Adams Morasca
Chavez Briddick
Leon Oldroyd
Ashley Doe
Leja Caldarera
Jeanfrancois Venere
Ricardo Gaucho
Silvio Slusarski
IdCountryDate
1000Australia2026-05-30
1001Italy2026-05-12
1002India2026-05-27
1003Canada2026-05-13
1004United Kingdom2026-06-01
1005Germany2026-05-04
1006India2026-05-26
1007Canada2026-05-10
1008Spain2026-05-25
1009India2026-05-20
1010Germany2026-05-30
1011Japan2026-05-29
1012Brazil2026-05-19
1013Brazil2026-05-23
1014Canada2026-05-28
1015Canada2026-05-20
1016Australia2026-05-30
1017Italy2026-05-08
1018France2026-05-24
1019India2026-05-31
1020France2026-05-31
1021Japan2026-05-28
1022Canada2026-05-07
1023Brazil2026-05-30
1024Canada2026-05-24
1025Italy2026-05-28
1026Germany2026-05-19
1027Brazil2026-05-13
1028France2026-05-27
1029United Kingdom2026-05-06
1030India2026-05-22
1031Canada2026-05-04
1032United Kingdom2026-06-02
1033India2026-05-27
1034Russia2026-05-16
1035India2026-05-23
1036United Kingdom2026-05-06
1037Italy2026-06-01
1038Brazil2026-05-11
1039Japan2026-05-19
1040United Kingdom2026-05-21
1041Germany2026-06-02
1042France2026-05-17
1043Spain2026-06-02
1044France2026-05-18
1045Russia2026-05-10
1046India2026-05-26
1047Italy2026-05-30
1048Russia2026-05-16
1049Russia2026-05-13

On-Demand Data

NameIdCountryDate
Clifford Rim1000United Kingdom2026-05-22
Emily Whobrey1001Japan2026-05-18
Kadeem Flosi1002Canada2026-05-04
Chavez Briddick1003France2026-05-30
Morrow Ruta1004Spain2026-05-26
Murillo Malet1005India2026-05-31
Jones Vocelka1006Germany2026-05-10
Salvatore Stockham1007India2026-05-27
Salvatore Stockham1008Japan2026-05-18
Kaitlin Ostrosky1009Brazil2026-05-28
David Darakjy1010Australia2026-05-31
Silvio Slusarski1011Russia2026-05-31
James Butt1012Germany2026-05-08
Salvatore Stockham1013Spain2026-05-12
Jones Vocelka1014United Kingdom2026-05-21
Stacey Maclead1015India2026-05-21
Rodrigues Campain1016Germany2026-05-29
Claire Tollner1017Italy2026-05-22
Deepesh Chui1018Spain2026-05-21
Sinclair Waycott1019France2026-05-20
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Salvatore StockhamAustraliaBernardo Dominic NEW
Alejandro PerinAustraliaOnyama Limba RENEWAL
Juan WieserAustraliaXuxue Feng NEW
Mayumi KolmetzItalyAsiya Javayant PROPOSAL
Clifford RimBrazilAmy Elsner RENEWAL
Leja CaldareraUnited KingdomStephen Shaw RENEWAL
Jefferson SchemmerFranceOnyama Limba QUALIFIED
Alejandro PerinFranceOnyama Limba QUALIFIED
Francesco ShinkoItalyOnyama Limba RENEWAL
Isabel BowleyArgentinaElwin Sharvill QUALIFIED
Mayumi KolmetzCanadaStephen Shaw NEW
Ashley DoeUnited KingdomXuxue Feng NEGOTIATION
Jeanfrancois VenereSpainAnna Fali NEW
Jefferson SchemmerGermanyIvan Magalhaes PROPOSAL
Wickens NestleAustraliaIvan Magalhaes PROPOSAL
Mayumi KolmetzGermanyAmy Elsner PROPOSAL
Smith GlickArgentinaXuxue Feng NEW
Emily WhobreyUnited KingdomAnna Fali RENEWAL
Stacey MacleadGermanyElwin Sharvill RENEWAL
Octavia MaletGermanyAmy Elsner UNQUALIFIED
Salvatore StockhamFranceStephen Shaw NEGOTIATION
Greenwood BologniaArgentinaBernardo Dominic NEW
Rodrigues CampainCanadaIoni Bowcher RENEWAL
Cody SaylorsUnited KingdomBernardo Dominic RENEWAL
Wickens NestleAustraliaBernardo Dominic NEW
Johnson SergiCanadaIvan Magalhaes PROPOSAL
Rodrigues CampainFranceElwin Sharvill UNQUALIFIED
Clifford RimSpainIoni Bowcher PROPOSAL
Ashley DoeFranceXuxue Feng RENEWAL
Isabel BowleyUnited KingdomIoni Bowcher PROPOSAL
Jefferson SchemmerItalyAmy Elsner PROPOSAL
Maisha RulapaughSpainAnna Fali QUALIFIED
Rodrigues CampainRussiaAnna Fali UNQUALIFIED
Darci PoquetteBrazilBernardo Dominic QUALIFIED
Chavez BriddickCanadaIoni Bowcher NEGOTIATION
Kadeem FlosiSpainAmy Elsner NEGOTIATION
Leon OldroydCanadaIvan Magalhaes PROPOSAL
Costa DilliardFranceIoni Bowcher PROPOSAL
Munro FerenczCanadaElwin Sharvill NEGOTIATION
Mayumi KolmetzArgentinaElwin Sharvill NEW

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