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
Costa DilliardBrazilAsiya Javayant NEW
Murillo MaletBrazilAmy Elsner NEW
Kadeem FlosiItalyBernardo Dominic NEW
Mayumi KolmetzJapanOnyama Limba PROPOSAL
Johnson SergiCanadaOnyama Limba UNQUALIFIED
Stacey MacleadUnited KingdomXuxue Feng RENEWAL
Leon OldroydAustraliaOnyama Limba PROPOSAL
James ButtAustraliaIoni Bowcher RENEWAL
Antonio CaudyItalyIvan Magalhaes RENEWAL
Octavia MaletAustraliaIvan Magalhaes RENEWAL
Adams MorascaGermanyBernardo Dominic NEGOTIATION
Kadeem FlosiAustraliaOnyama Limba PROPOSAL
Claire TollnerCanadaXuxue Feng UNQUALIFIED
Kaitlin OstroskyItalyAsiya Javayant NEW
Johnson SergiJapanStephen Shaw UNQUALIFIED
Alejandro PerinAustraliaBernardo Dominic NEW
Kaitlin OstroskyBrazilIoni Bowcher QUALIFIED
Greenwood BologniaSpainElwin Sharvill NEW
Aika InouyeCanadaBernardo Dominic NEW
Jefferson SchemmerIndiaStephen Shaw QUALIFIED
Francesco ShinkoCanadaElwin Sharvill NEW
Deepesh ChuiIndiaAnna Fali RENEWAL
Smith GlickFranceIoni Bowcher NEW
Maria MarrierArgentinaAnna Fali NEGOTIATION
Greenwood BologniaBrazilBernardo Dominic NEGOTIATION
Silvio SlusarskiSpainIoni Bowcher QUALIFIED
Juan WieserArgentinaAmy Elsner NEW
Juan WieserJapanBernardo Dominic UNQUALIFIED
Jefferson SchemmerUnited KingdomAsiya Javayant NEGOTIATION
Antonio CaudyUnited KingdomAsiya Javayant UNQUALIFIED
Kaitlin OstroskyIndiaElwin Sharvill NEW
Johnson SergiItalyStephen Shaw QUALIFIED
Leon OldroydGermanyStephen Shaw RENEWAL
Rodrigues CampainItalyOnyama Limba PROPOSAL
Kaitlin OstroskyItalyIvan Magalhaes PROPOSAL
James ButtArgentinaOnyama Limba NEW
Aika InouyeGermanyBernardo Dominic PROPOSAL
David DarakjyIndiaAsiya Javayant NEW
Kaitlin OstroskyRussiaXuxue Feng NEW
Greenwood BologniaJapanBernardo Dominic PROPOSAL
Tony FollerGermanyElwin Sharvill UNQUALIFIED
Johnson SergiBrazilAmy Elsner PROPOSAL
Antonio CaudyFranceAsiya Javayant NEW
Rodrigues CampainItalyAmy Elsner UNQUALIFIED
Izzy GarufiIndiaIoni Bowcher NEGOTIATION
Clifford RimCanadaIoni Bowcher QUALIFIED
Greenwood BologniaAustraliaElwin Sharvill NEW
Cody SaylorsFranceXuxue Feng UNQUALIFIED
Rodrigues CampainFranceBernardo Dominic NEW
Costa DilliardRussiaOnyama Limba RENEWAL
Horizontal
NameCountryRepresentativeStatus
Claire TollnerSpainBernardo Dominic NEGOTIATION
David DarakjyCanadaIvan Magalhaes UNQUALIFIED
Jefferson SchemmerFranceBernardo Dominic NEW
Jefferson SchemmerItalyIoni Bowcher NEW
Ivar PaprockiCanadaBernardo Dominic NEW
Alejandro PerinFranceIoni Bowcher QUALIFIED
Kaitlin OstroskyUnited KingdomAsiya Javayant PROPOSAL
Smith GlickSpainElwin Sharvill RENEWAL
Silvio SlusarskiAustraliaAsiya Javayant RENEWAL
Tony FollerGermanyAnna Fali PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aika InouyeAustralia2026-06-17King, Christopher A Esq NEGOTIATION38Stephen Shaw
1001Jones VocelkaIndia2026-06-11King, Christopher A Esq NEGOTIATION37Asiya Javayant
1002Maisha RulapaughItaly2026-05-25Printing Dimensions NEW49Elwin Sharvill
1003James ButtIndia2026-05-30Feltz Printing Service UNQUALIFIED32Stephen Shaw
1004Cody SaylorsSpain2026-06-14Dorl, James J Esq NEGOTIATION99Onyama Limba
1005Izzy GarufiCanada2026-05-20Printing Dimensions NEW22Amy Elsner
1006Izzy GarufiArgentina2026-05-19King, Christopher A Esq PROPOSAL25Amy Elsner
1007Jefferson SchemmerUnited Kingdom2026-06-06Feltz Printing Service RENEWAL21Stephen Shaw
1008Leja CaldareraArgentina2026-05-26Rangoni Of Florence QUALIFIED6Asiya Javayant
1009Cody SaylorsCanada2026-05-25Printing Dimensions RENEWAL12Stephen Shaw
1010Rodrigues CampainCanada2026-06-05Rousseaux, Michael Esq UNQUALIFIED21Bernardo Dominic
1011Chavez BriddickItaly2026-05-28Morlong Associates NEGOTIATION83Xuxue Feng
1012Faith GillianAustralia2026-05-24King, Christopher A Esq NEGOTIATION1Amy Elsner
1013Sinclair WaycottSpain2026-06-06Truhlar And Truhlar Attys QUALIFIED16Bernardo Dominic
1014David DarakjyAustralia2026-05-20Chapman, Ross E Esq QUALIFIED98Anna Fali
1015Izzy GarufiRussia2026-05-31Feiner Bros RENEWAL50Xuxue Feng
1016Juan WieserArgentina2026-06-01Truhlar And Truhlar Attys PROPOSAL48Asiya Javayant
1017Cody SaylorsItaly2026-06-02Feiner Bros QUALIFIED59Xuxue Feng
1018Nicolas IturbideIndia2026-06-13Morlong Associates NEGOTIATION35Amy Elsner
1019Mujtaba NickaIndia2026-06-11Feltz Printing Service RENEWAL51Ivan Magalhaes
1020Faith GillianIndia2026-06-03Chemel, James L Cpa NEGOTIATION74Xuxue Feng
1021Mujtaba NickaItaly2026-05-19Commercial Press RENEWAL87Stephen Shaw
1022Claire TollnerBrazil2026-06-01Truhlar And Truhlar Attys NEGOTIATION31Amy Elsner
1023Jones VocelkaAustralia2026-06-15King, Christopher A Esq RENEWAL5Elwin Sharvill
1024Octavia MaletFrance2026-06-15Chanay, Jeffrey A Esq NEGOTIATION28Elwin Sharvill
1025Izzy GarufiArgentina2026-05-27Chanay, Jeffrey A Esq NEW84Amy Elsner
1026Jefferson SchemmerFrance2026-06-04Printing Dimensions PROPOSAL75Onyama Limba
1027Salvatore StockhamRussia2026-06-11Chemel, James L Cpa NEGOTIATION6Ivan Magalhaes
1028Ivar PaprockiItaly2026-05-19Benton, John B Jr RENEWAL62Onyama Limba
1029Stacey MacleadUnited Kingdom2026-05-24Truhlar And Truhlar Attys UNQUALIFIED82Anna Fali
1030Maria MarrierItaly2026-05-19Rangoni Of Florence PROPOSAL6Onyama Limba
1031Isabel BowleyFrance2026-05-21Buckley Miller Wright UNQUALIFIED72Xuxue Feng
1032Greenwood BologniaAustralia2026-06-17Rousseaux, Michael Esq UNQUALIFIED78Bernardo Dominic
1033Kaitlin OstroskyBrazil2026-06-09Rousseaux, Michael Esq QUALIFIED12Elwin Sharvill
1034Tony FollerRussia2026-06-11Morlong Associates QUALIFIED33Bernardo Dominic
1035Ashley DoeRussia2026-06-14King, Christopher A Esq UNQUALIFIED0Stephen Shaw
1036Jefferson SchemmerGermany2026-05-25Printing Dimensions NEGOTIATION43Stephen Shaw
1037Jones VocelkaCanada2026-06-04Printing Dimensions QUALIFIED77Xuxue Feng
1038Greenwood BologniaGermany2026-05-21Commercial Press QUALIFIED83Ioni Bowcher
1039Mujtaba NickaFrance2026-06-09Chapman, Ross E Esq PROPOSAL83Asiya Javayant
1040Johnson SergiArgentina2026-05-25Morlong Associates QUALIFIED71Amy Elsner
1041Jefferson SchemmerArgentina2026-06-09Rousseaux, Michael Esq NEGOTIATION99Anna Fali
1042Morrow RutaFrance2026-06-01Truhlar And Truhlar Attys QUALIFIED62Xuxue Feng
1043Antonio CaudyAustralia2026-05-31King, Christopher A Esq PROPOSAL92Anna Fali
1044Nicolas IturbideIndia2026-05-27Chapman, Ross E Esq PROPOSAL79Elwin Sharvill
1045Izzy GarufiJapan2026-05-24Truhlar And Truhlar Attys NEGOTIATION7Stephen Shaw
1046Leja CaldareraItaly2026-06-12Commercial Press NEW52Stephen Shaw
1047Alejandro PerinAustralia2026-06-01Printing Dimensions NEGOTIATION65Elwin Sharvill
1048Antonio CaudySpain2026-05-20Commercial Press UNQUALIFIED82Xuxue Feng
1049Johnson SergiArgentina2026-05-25King, Christopher A Esq UNQUALIFIED44Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Wickens NestleRussiaIoni Bowcher PROPOSAL
Mayumi KolmetzJapanOnyama Limba NEW
Francesco ShinkoItalyIoni Bowcher PROPOSAL
Leon OldroydFranceIoni Bowcher NEW
Jennifer AmigonGermanyAmy Elsner QUALIFIED
Deepesh ChuiItalyIvan Magalhaes QUALIFIED
Johnson SergiItalyAnna Fali UNQUALIFIED
Chavez BriddickGermanyAnna Fali RENEWAL
Jeanfrancois VenereRussiaXuxue Feng PROPOSAL
Tony FollerRussiaAsiya Javayant RENEWAL
Julie StensethGermanyIoni Bowcher QUALIFIED
Leon OldroydSpainXuxue Feng RENEWAL
Smith GlickUnited KingdomBernardo Dominic PROPOSAL
Jennifer AmigonSpainIvan Magalhaes PROPOSAL
Maria MarrierBrazilIvan Magalhaes UNQUALIFIED
Juan WieserGermanyAsiya Javayant UNQUALIFIED
Ashley DoeCanadaIvan Magalhaes NEGOTIATION
Mayumi KolmetzUnited KingdomOnyama Limba NEGOTIATION
Wickens NestleItalyXuxue Feng UNQUALIFIED
Mujtaba NickaRussiaAsiya Javayant QUALIFIED
Ricardo GauchoSpainAsiya Javayant NEW
Clifford RimAustraliaAsiya Javayant UNQUALIFIED
Chavez BriddickBrazilOnyama Limba RENEWAL
Greenwood BologniaArgentinaIoni Bowcher PROPOSAL
Wickens NestleGermanyElwin Sharvill UNQUALIFIED
Cody SaylorsBrazilIvan Magalhaes QUALIFIED
Chavez BriddickJapanOnyama Limba UNQUALIFIED
Kaitlin OstroskySpainOnyama Limba PROPOSAL
Mujtaba NickaCanadaIvan Magalhaes RENEWAL
Jennifer AmigonItalyIoni Bowcher NEW
Mayumi KolmetzBrazilBernardo Dominic UNQUALIFIED
Ashley DoeBrazilElwin Sharvill NEGOTIATION
Morrow RutaIndiaBernardo Dominic QUALIFIED
Juan WieserBrazilStephen Shaw RENEWAL
Jefferson SchemmerJapanBernardo Dominic NEW
Jefferson SchemmerBrazilBernardo Dominic PROPOSAL
Leja CaldareraItalyOnyama Limba QUALIFIED
Greenwood BologniaCanadaStephen Shaw RENEWAL
Deepesh ChuiCanadaAmy Elsner UNQUALIFIED
Morrow RutaGermanyAsiya Javayant RENEWAL
Adams MorascaItalyAmy Elsner NEW
Nicolas IturbideSpainOnyama Limba PROPOSAL
Murillo MaletBrazilBernardo Dominic NEGOTIATION
Rodrigues CampainFranceElwin Sharvill RENEWAL
Mayumi KolmetzGermanyAnna Fali NEGOTIATION
Julie StensethAustraliaElwin Sharvill QUALIFIED
Maisha RulapaughSpainOnyama Limba NEW
Kadeem FlosiIndiaAsiya Javayant NEW
Aika InouyeGermanyXuxue Feng NEGOTIATION
Jeanfrancois VenereSpainAsiya Javayant NEW
Frozen Columns
Name
Johnson Sergi
Claire Tollner
Jennifer Amigon
Silvio Slusarski
Aditya Kusko
Jennifer Amigon
Deepesh Chui
Stacey Maclead
Isabel Bowley
Wickens Nestle
Mujtaba Nicka
Munro Ferencz
Izzy Garufi
Leon Oldroyd
Stacey Maclead
Aruna Figeroa
Izzy Garufi
Alejandro Perin
James Butt
Aika Inouye
Greenwood Bolognia
Aditya Kusko
Aditya Kusko
Leja Caldarera
Rodrigues Campain
Aditya Kusko
Claire Tollner
Rodrigues Campain
Julie Stenseth
Arvin Albares
Aika Inouye
Nicolas Iturbide
Izzy Garufi
Jefferson Schemmer
Cody Saylors
Aruna Figeroa
Leja Caldarera
Antonio Caudy
Jones Vocelka
Munro Ferencz
David Darakjy
Maisha Rulapaugh
David Darakjy
David Darakjy
Johnson Sergi
Aruna Figeroa
Cody Saylors
Tony Foller
Stacey Maclead
Jeanfrancois Venere
IdCountryDate
1000Australia2026-06-12
1001Spain2026-05-26
1002Russia2026-06-06
1003Germany2026-06-01
1004France2026-06-04
1005France2026-06-01
1006Brazil2026-05-31
1007United Kingdom2026-06-08
1008United Kingdom2026-05-23
1009Japan2026-05-19
1010India2026-05-26
1011Spain2026-05-19
1012Japan2026-06-08
1013United Kingdom2026-06-07
1014France2026-06-14
1015United Kingdom2026-05-30
1016Australia2026-06-14
1017Brazil2026-05-23
1018Russia2026-05-19
1019Spain2026-06-04
1020Canada2026-05-28
1021Canada2026-06-13
1022Russia2026-06-04
1023Spain2026-06-06
1024Germany2026-05-28
1025Spain2026-05-28
1026United Kingdom2026-06-16
1027Argentina2026-06-02
1028Argentina2026-06-10
1029Canada2026-06-10
1030Italy2026-06-14
1031Germany2026-06-08
1032Japan2026-06-01
1033Russia2026-06-12
1034Argentina2026-05-20
1035Argentina2026-06-01
1036Germany2026-05-23
1037India2026-06-11
1038Germany2026-06-04
1039France2026-06-16
1040Germany2026-05-26
1041Spain2026-06-01
1042Russia2026-06-03
1043India2026-05-21
1044Canada2026-05-22
1045Germany2026-06-11
1046Japan2026-05-25
1047Brazil2026-05-22
1048Russia2026-06-16
1049Argentina2026-06-10

On-Demand Data

NameIdCountryDate
Morrow Ruta1000India2026-06-12
David Darakjy1001Brazil2026-06-12
Sinclair Waycott1002Argentina2026-06-11
Antonio Caudy1003Italy2026-06-13
Misaki Royster1004Spain2026-05-26
Jefferson Schemmer1005United Kingdom2026-06-09
Leja Caldarera1006Brazil2026-06-03
David Darakjy1007Australia2026-06-10
Chavez Briddick1008Canada2026-06-14
Maisha Rulapaugh1009Canada2026-05-31
Maisha Rulapaugh1010Canada2026-05-28
Cody Saylors1011India2026-06-05
Ashley Doe1012Germany2026-06-01
Rodrigues Campain1013Australia2026-06-15
Juan Wieser1014Argentina2026-06-14
Leja Caldarera1015Italy2026-06-08
Leon Oldroyd1016France2026-06-13
Alejandro Perin1017India2026-05-24
Johnson Sergi1018United Kingdom2026-06-12
Leja Caldarera1019Germany2026-05-25
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Smith GlickAustraliaIvan Magalhaes QUALIFIED
Munro FerenczUnited KingdomOnyama Limba NEGOTIATION
Morrow RutaItalyStephen Shaw UNQUALIFIED
Francesco ShinkoCanadaXuxue Feng RENEWAL
Jefferson SchemmerItalyIoni Bowcher NEGOTIATION
Wickens NestleAustraliaElwin Sharvill NEW
Stacey MacleadCanadaAmy Elsner RENEWAL
Mujtaba NickaItalyBernardo Dominic NEGOTIATION
Isabel BowleyJapanAsiya Javayant UNQUALIFIED
Adams MorascaFranceAnna Fali QUALIFIED
Salvatore StockhamGermanyElwin Sharvill QUALIFIED
Aruna FigeroaBrazilAsiya Javayant QUALIFIED
Octavia MaletGermanyAmy Elsner RENEWAL
Aika InouyeItalyStephen Shaw PROPOSAL
Aika InouyeCanadaAsiya Javayant RENEWAL
Aruna FigeroaIndiaAsiya Javayant NEW
Stacey MacleadIndiaBernardo Dominic QUALIFIED
Izzy GarufiIndiaStephen Shaw RENEWAL
Aika InouyeIndiaIoni Bowcher UNQUALIFIED
Jones VocelkaBrazilOnyama Limba UNQUALIFIED
Aditya KuskoCanadaAmy Elsner UNQUALIFIED
Kaitlin OstroskyIndiaStephen Shaw NEW
Kaitlin OstroskyItalyAnna Fali NEGOTIATION
Emily WhobreyCanadaAmy Elsner NEW
Izzy GarufiGermanyAnna Fali UNQUALIFIED
Deepesh ChuiGermanyIvan Magalhaes NEW
Jefferson SchemmerBrazilIvan Magalhaes NEW
Greenwood BologniaItalyBernardo Dominic RENEWAL
Sinclair WaycottJapanAnna Fali PROPOSAL
Leon OldroydBrazilAmy Elsner PROPOSAL
Tony FollerJapanOnyama Limba PROPOSAL
Antonio CaudyAustraliaAmy Elsner NEW
Alejandro PerinIndiaOnyama Limba NEW
Aruna FigeroaBrazilStephen Shaw PROPOSAL
Murillo MaletJapanIvan Magalhaes PROPOSAL
Deepesh ChuiFranceOnyama Limba UNQUALIFIED
Octavia MaletRussiaAmy Elsner UNQUALIFIED
Ashley DoeSpainOnyama Limba NEGOTIATION
Aditya KuskoFranceXuxue Feng QUALIFIED
Ivar PaprockiBrazilOnyama Limba 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>