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
Claire TollnerItalyIvan Magalhaes PROPOSAL
Ashley DoeIndiaXuxue Feng NEW
Adams MorascaBrazilOnyama Limba UNQUALIFIED
Jennifer AmigonIndiaAsiya Javayant QUALIFIED
Darci PoquetteSpainOnyama Limba UNQUALIFIED
Stacey MacleadFranceIvan Magalhaes QUALIFIED
Misaki RoysterCanadaIoni Bowcher RENEWAL
Ivar PaprockiSpainIvan Magalhaes QUALIFIED
Mayumi KolmetzItalyBernardo Dominic QUALIFIED
Munro FerenczArgentinaIvan Magalhaes UNQUALIFIED
Mayumi KolmetzJapanAmy Elsner NEGOTIATION
Munro FerenczIndiaAsiya Javayant PROPOSAL
Munro FerenczBrazilAnna Fali PROPOSAL
Stacey MacleadJapanIvan Magalhaes NEW
Jefferson SchemmerUnited KingdomElwin Sharvill QUALIFIED
Leon OldroydItalyAmy Elsner UNQUALIFIED
Darci PoquetteBrazilXuxue Feng NEW
David DarakjyGermanyAmy Elsner QUALIFIED
Ashley DoeSpainAnna Fali UNQUALIFIED
Mujtaba NickaIndiaAsiya Javayant UNQUALIFIED
Aruna FigeroaArgentinaElwin Sharvill RENEWAL
Deepesh ChuiArgentinaXuxue Feng NEGOTIATION
James ButtItalyAmy Elsner QUALIFIED
Murillo MaletRussiaStephen Shaw NEW
Alejandro PerinRussiaXuxue Feng NEGOTIATION
Leja CaldareraItalyAsiya Javayant NEW
Stacey MacleadSpainBernardo Dominic NEW
Morrow RutaFranceBernardo Dominic RENEWAL
James ButtRussiaElwin Sharvill UNQUALIFIED
Isabel BowleyItalyAnna Fali RENEWAL
Stacey MacleadFranceStephen Shaw UNQUALIFIED
Claire TollnerItalyIvan Magalhaes QUALIFIED
Jones VocelkaItalyIvan Magalhaes QUALIFIED
Kaitlin OstroskyJapanIvan Magalhaes PROPOSAL
Mayumi KolmetzGermanyOnyama Limba PROPOSAL
Leon OldroydArgentinaStephen Shaw NEW
Morrow RutaCanadaOnyama Limba QUALIFIED
Murillo MaletIndiaAsiya Javayant NEGOTIATION
Leon OldroydJapanElwin Sharvill NEW
Costa DilliardRussiaElwin Sharvill UNQUALIFIED
Costa DilliardJapanElwin Sharvill NEGOTIATION
Ivar PaprockiCanadaOnyama Limba PROPOSAL
Salvatore StockhamItalyXuxue Feng NEGOTIATION
Deepesh ChuiIndiaStephen Shaw RENEWAL
Sinclair WaycottGermanyIvan Magalhaes QUALIFIED
Chavez BriddickCanadaAnna Fali NEW
Faith GillianUnited KingdomIvan Magalhaes UNQUALIFIED
Murillo MaletAustraliaOnyama Limba RENEWAL
Leon OldroydArgentinaOnyama Limba PROPOSAL
Clifford RimArgentinaIvan Magalhaes RENEWAL
Horizontal
NameCountryRepresentativeStatus
Jefferson SchemmerUnited KingdomElwin Sharvill RENEWAL
David DarakjyUnited KingdomXuxue Feng UNQUALIFIED
Adams MorascaCanadaIvan Magalhaes NEGOTIATION
Smith GlickRussiaIvan Magalhaes NEGOTIATION
James ButtArgentinaAnna Fali RENEWAL
Mujtaba NickaFranceAnna Fali NEW
Ivar PaprockiSpainOnyama Limba RENEWAL
Munro FerenczGermanyAnna Fali PROPOSAL
Cody SaylorsRussiaAsiya Javayant PROPOSAL
Nicolas IturbideArgentinaIvan Magalhaes UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ricardo GauchoSpain2026-05-07Feiner Bros QUALIFIED91Onyama Limba
1001Julie StensethJapan2026-05-28Printing Dimensions UNQUALIFIED28Anna Fali
1002Murillo MaletSpain2026-05-27Commercial Press NEW34Anna Fali
1003Costa DilliardAustralia2026-05-03King, Christopher A Esq NEW67Onyama Limba
1004Smith GlickUnited Kingdom2026-05-06Printing Dimensions RENEWAL92Asiya Javayant
1005Smith GlickIndia2026-05-05King, Christopher A Esq NEW83Elwin Sharvill
1006Alejandro PerinAustralia2026-05-30Chanay, Jeffrey A Esq QUALIFIED10Ivan Magalhaes
1007Johnson SergiRussia2026-05-14Truhlar And Truhlar Attys UNQUALIFIED76Onyama Limba
1008James ButtItaly2026-05-03Rousseaux, Michael Esq NEGOTIATION47Bernardo Dominic
1009Kadeem FlosiIndia2026-05-16Feiner Bros QUALIFIED30Elwin Sharvill
1010Emily WhobreyArgentina2026-05-29Truhlar And Truhlar Attys UNQUALIFIED92Stephen Shaw
1011Leon OldroydUnited Kingdom2026-05-13Chanay, Jeffrey A Esq QUALIFIED69Bernardo Dominic
1012Munro FerenczArgentina2026-05-17Chapman, Ross E Esq NEW16Ivan Magalhaes
1013Murillo MaletArgentina2026-05-21Rousseaux, Michael Esq UNQUALIFIED5Elwin Sharvill
1014David DarakjyFrance2026-05-05Truhlar And Truhlar Attys QUALIFIED83Asiya Javayant
1015Alejandro PerinAustralia2026-05-28Commercial Press NEW31Bernardo Dominic
1016Aditya KuskoArgentina2026-05-26Benton, John B Jr NEW92Bernardo Dominic
1017Morrow RutaUnited Kingdom2026-05-14Feltz Printing Service UNQUALIFIED83Onyama Limba
1018Leja CaldareraFrance2026-05-03Benton, John B Jr NEGOTIATION49Ioni Bowcher
1019Faith GillianFrance2026-05-04Printing Dimensions RENEWAL47Stephen Shaw
1020Kaitlin OstroskyGermany2026-05-17Morlong Associates PROPOSAL50Asiya Javayant
1021Misaki RoysterIndia2026-05-04Commercial Press QUALIFIED42Stephen Shaw
1022Kadeem FlosiRussia2026-05-12Chemel, James L Cpa RENEWAL79Asiya Javayant
1023Costa DilliardRussia2026-05-14Chanay, Jeffrey A Esq QUALIFIED72Ivan Magalhaes
1024Deepesh ChuiSpain2026-05-01Chapman, Ross E Esq RENEWAL70Amy Elsner
1025Mujtaba NickaAustralia2026-05-16Printing Dimensions PROPOSAL2Anna Fali
1026Jones VocelkaJapan2026-05-04Buckley Miller Wright QUALIFIED95Ivan Magalhaes
1027Leon OldroydJapan2026-05-03Feltz Printing Service NEGOTIATION90Elwin Sharvill
1028Chavez BriddickAustralia2026-05-28Rangoni Of Florence NEGOTIATION99Bernardo Dominic
1029Stacey MacleadRussia2026-05-08Rousseaux, Michael Esq RENEWAL55Onyama Limba
1030Jones VocelkaJapan2026-05-14Chanay, Jeffrey A Esq RENEWAL58Ioni Bowcher
1031Kaitlin OstroskyItaly2026-05-21Printing Dimensions RENEWAL92Stephen Shaw
1032Salvatore StockhamCanada2026-05-22Printing Dimensions UNQUALIFIED39Onyama Limba
1033Ivar PaprockiArgentina2026-05-01Commercial Press PROPOSAL10Anna Fali
1034Jeanfrancois VenereFrance2026-05-28Morlong Associates NEW63Elwin Sharvill
1035Juan WieserGermany2026-05-10Rangoni Of Florence UNQUALIFIED16Asiya Javayant
1036Kaitlin OstroskySpain2026-05-28Printing Dimensions PROPOSAL62Bernardo Dominic
1037Costa DilliardArgentina2026-05-10Truhlar And Truhlar Attys RENEWAL61Ivan Magalhaes
1038Stacey MacleadGermany2026-05-03Truhlar And Truhlar Attys NEGOTIATION75Asiya Javayant
1039Mayumi KolmetzJapan2026-05-30Chanay, Jeffrey A Esq RENEWAL33Anna Fali
1040Greenwood BologniaBrazil2026-05-05Morlong Associates QUALIFIED29Asiya Javayant
1041Jefferson SchemmerFrance2026-05-02Truhlar And Truhlar Attys UNQUALIFIED16Xuxue Feng
1042Johnson SergiBrazil2026-05-04Rousseaux, Michael Esq PROPOSAL14Amy Elsner
1043Izzy GarufiCanada2026-05-12Chapman, Ross E Esq RENEWAL37Xuxue Feng
1044Alejandro PerinItaly2026-05-05Rangoni Of Florence NEW51Anna Fali
1045Alejandro PerinFrance2026-05-13Printing Dimensions NEW7Amy Elsner
1046Tony FollerRussia2026-05-24Chapman, Ross E Esq NEGOTIATION85Amy Elsner
1047Alejandro PerinSpain2026-05-11Chemel, James L Cpa UNQUALIFIED73Ioni Bowcher
1048Leja CaldareraUnited Kingdom2026-05-11Benton, John B Jr PROPOSAL67Asiya Javayant
1049Jefferson SchemmerFrance2026-05-02Truhlar And Truhlar Attys PROPOSAL33Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
David DarakjyFranceOnyama Limba NEW
Tony FollerArgentinaIvan Magalhaes NEW
Aika InouyeUnited KingdomAmy Elsner PROPOSAL
Morrow RutaArgentinaOnyama Limba NEGOTIATION
Francesco ShinkoCanadaOnyama Limba NEW
Leja CaldareraBrazilXuxue Feng PROPOSAL
Adams MorascaSpainBernardo Dominic QUALIFIED
Clifford RimFranceAnna Fali QUALIFIED
Wickens NestleCanadaIoni Bowcher RENEWAL
Jeanfrancois VenereItalyIvan Magalhaes QUALIFIED
Smith GlickItalyElwin Sharvill NEW
Ivar PaprockiUnited KingdomIvan Magalhaes PROPOSAL
Leon OldroydAustraliaAmy Elsner NEGOTIATION
Nicolas IturbideRussiaOnyama Limba RENEWAL
Faith GillianRussiaAsiya Javayant QUALIFIED
Mayumi KolmetzGermanyStephen Shaw RENEWAL
Emily WhobreyGermanyAsiya Javayant NEW
Jones VocelkaFranceAsiya Javayant UNQUALIFIED
Claire TollnerJapanIvan Magalhaes PROPOSAL
Kaitlin OstroskyArgentinaXuxue Feng RENEWAL
Chavez BriddickJapanStephen Shaw NEW
Darci PoquetteUnited KingdomIoni Bowcher RENEWAL
Sinclair WaycottCanadaIoni Bowcher NEW
Mayumi KolmetzBrazilAsiya Javayant PROPOSAL
Adams MorascaAustraliaAsiya Javayant RENEWAL
Jefferson SchemmerGermanyIoni Bowcher RENEWAL
Izzy GarufiIndiaXuxue Feng NEGOTIATION
James ButtCanadaIoni Bowcher NEW
Silvio SlusarskiFranceStephen Shaw UNQUALIFIED
Tony FollerFranceAnna Fali PROPOSAL
Cody SaylorsUnited KingdomStephen Shaw RENEWAL
Salvatore StockhamRussiaXuxue Feng UNQUALIFIED
Sinclair WaycottIndiaAsiya Javayant NEGOTIATION
Antonio CaudyUnited KingdomStephen Shaw QUALIFIED
Smith GlickArgentinaAnna Fali UNQUALIFIED
Silvio SlusarskiCanadaElwin Sharvill UNQUALIFIED
Salvatore StockhamGermanyOnyama Limba RENEWAL
James ButtArgentinaAmy Elsner NEGOTIATION
Emily WhobreySpainXuxue Feng NEW
Octavia MaletAustraliaElwin Sharvill QUALIFIED
Ricardo GauchoFranceOnyama Limba NEGOTIATION
Isabel BowleyBrazilOnyama Limba PROPOSAL
Aditya KuskoIndiaElwin Sharvill RENEWAL
Nicolas IturbideFranceIvan Magalhaes NEGOTIATION
Jefferson SchemmerIndiaBernardo Dominic NEGOTIATION
Rodrigues CampainFranceXuxue Feng QUALIFIED
Wickens NestleFranceAmy Elsner PROPOSAL
Morrow RutaUnited KingdomXuxue Feng NEGOTIATION
Kadeem FlosiRussiaBernardo Dominic UNQUALIFIED
Jones VocelkaSpainAnna Fali UNQUALIFIED
Frozen Columns
Name
Jefferson Schemmer
Salvatore Stockham
Claire Tollner
Smith Glick
Johnson Sergi
Isabel Bowley
Rodrigues Campain
Darci Poquette
Ivar Paprocki
Claire Tollner
Smith Glick
Aditya Kusko
Stacey Maclead
Jones Vocelka
Leon Oldroyd
Smith Glick
Aruna Figeroa
Juan Wieser
Misaki Royster
Munro Ferencz
Kadeem Flosi
Maria Marrier
Faith Gillian
Octavia Malet
Alejandro Perin
Cody Saylors
Clifford Rim
Kadeem Flosi
Rodrigues Campain
Emily Whobrey
Arvin Albares
Izzy Garufi
Isabel Bowley
Aika Inouye
Chavez Briddick
Adams Morasca
Murillo Malet
Ashley Doe
Murillo Malet
Octavia Malet
Ashley Doe
Arvin Albares
Octavia Malet
Cody Saylors
Munro Ferencz
Francesco Shinko
Antonio Caudy
Leja Caldarera
Francesco Shinko
Darci Poquette
IdCountryDate
1000France2026-05-19
1001United Kingdom2026-05-21
1002Russia2026-05-29
1003Germany2026-05-30
1004Germany2026-05-18
1005Italy2026-05-09
1006India2026-05-15
1007United Kingdom2026-05-12
1008Brazil2026-05-04
1009Germany2026-05-12
1010Japan2026-05-07
1011Russia2026-05-18
1012Argentina2026-05-04
1013Germany2026-05-21
1014Japan2026-05-07
1015Russia2026-05-22
1016Canada2026-05-03
1017Germany2026-05-23
1018Spain2026-05-30
1019Russia2026-05-22
1020United Kingdom2026-05-18
1021Argentina2026-05-12
1022India2026-05-17
1023Argentina2026-05-18
1024Germany2026-05-21
1025France2026-05-04
1026Japan2026-05-21
1027Australia2026-05-27
1028Russia2026-05-06
1029Australia2026-05-10
1030Italy2026-05-06
1031Russia2026-05-15
1032India2026-05-26
1033United Kingdom2026-05-29
1034India2026-05-07
1035Germany2026-05-22
1036United Kingdom2026-05-05
1037Italy2026-05-12
1038Italy2026-05-16
1039Brazil2026-05-28
1040United Kingdom2026-05-06
1041Brazil2026-05-08
1042Japan2026-05-17
1043Germany2026-05-04
1044Spain2026-05-02
1045Japan2026-05-30
1046India2026-05-28
1047Canada2026-05-03
1048Canada2026-05-18
1049France2026-05-06

On-Demand Data

NameIdCountryDate
Cody Saylors1000Japan2026-05-17
Darci Poquette1001United Kingdom2026-05-23
Darci Poquette1002Argentina2026-05-06
Johnson Sergi1003Japan2026-05-02
Deepesh Chui1004Canada2026-05-23
Leon Oldroyd1005Argentina2026-05-20
Chavez Briddick1006Spain2026-05-19
Kaitlin Ostrosky1007Russia2026-05-20
Aruna Figeroa1008France2026-05-29
Murillo Malet1009India2026-05-15
Salvatore Stockham1010France2026-05-14
Adams Morasca1011Japan2026-05-14
Cody Saylors1012Japan2026-05-08
Aditya Kusko1013Spain2026-05-14
Deepesh Chui1014France2026-05-20
Jones Vocelka1015United Kingdom2026-05-12
Greenwood Bolognia1016France2026-05-14
Ashley Doe1017Germany2026-05-21
Silvio Slusarski1018Italy2026-05-25
Aika Inouye1019France2026-05-09
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Munro FerenczIndiaXuxue Feng UNQUALIFIED
Leon OldroydBrazilOnyama Limba UNQUALIFIED
Adams MorascaUnited KingdomXuxue Feng NEGOTIATION
Smith GlickIndiaAmy Elsner RENEWAL
Jeanfrancois VenereJapanOnyama Limba RENEWAL
Alejandro PerinGermanyXuxue Feng RENEWAL
James ButtRussiaIvan Magalhaes NEW
Chavez BriddickItalyAnna Fali PROPOSAL
Smith GlickItalyElwin Sharvill NEW
Chavez BriddickRussiaIvan Magalhaes NEW
Tony FollerFranceXuxue Feng NEW
Mayumi KolmetzGermanyAsiya Javayant RENEWAL
Mujtaba NickaUnited KingdomIvan Magalhaes NEW
Misaki RoysterSpainElwin Sharvill UNQUALIFIED
Claire TollnerRussiaBernardo Dominic PROPOSAL
Ricardo GauchoBrazilIvan Magalhaes PROPOSAL
Antonio CaudyJapanAmy Elsner RENEWAL
Faith GillianUnited KingdomIvan Magalhaes RENEWAL
Adams MorascaBrazilAsiya Javayant PROPOSAL
Johnson SergiUnited KingdomAmy Elsner UNQUALIFIED
Johnson SergiSpainBernardo Dominic NEGOTIATION
Johnson SergiSpainOnyama Limba NEW
Leja CaldareraRussiaAmy Elsner NEGOTIATION
Salvatore StockhamCanadaIvan Magalhaes NEGOTIATION
Cody SaylorsAustraliaAsiya Javayant QUALIFIED
Octavia MaletGermanyStephen Shaw NEGOTIATION
Cody SaylorsAustraliaStephen Shaw QUALIFIED
Salvatore StockhamCanadaIoni Bowcher QUALIFIED
Julie StensethIndiaOnyama Limba NEW
Leja CaldareraRussiaBernardo Dominic QUALIFIED
Smith GlickItalyXuxue Feng NEGOTIATION
Izzy GarufiFranceBernardo Dominic UNQUALIFIED
Ashley DoeArgentinaBernardo Dominic NEGOTIATION
Jefferson SchemmerGermanyXuxue Feng PROPOSAL
Kaitlin OstroskyCanadaAsiya Javayant NEW
Morrow RutaItalyStephen Shaw PROPOSAL
Ivar PaprockiBrazilIvan Magalhaes RENEWAL
Antonio CaudyRussiaAnna Fali UNQUALIFIED
Salvatore StockhamAustraliaStephen Shaw NEW
Leon OldroydFranceAnna Fali QUALIFIED

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