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
Rodrigues CampainArgentinaBernardo Dominic NEGOTIATION
Jennifer AmigonIndiaOnyama Limba UNQUALIFIED
Tony FollerSpainOnyama Limba QUALIFIED
Claire TollnerGermanyIoni Bowcher NEW
Deepesh ChuiCanadaIvan Magalhaes NEGOTIATION
Salvatore StockhamFranceAsiya Javayant UNQUALIFIED
Salvatore StockhamBrazilIoni Bowcher PROPOSAL
Ivar PaprockiAustraliaOnyama Limba NEGOTIATION
Clifford RimCanadaAsiya Javayant NEW
Maisha RulapaughAustraliaAsiya Javayant QUALIFIED
Greenwood BologniaRussiaElwin Sharvill UNQUALIFIED
Munro FerenczCanadaAmy Elsner PROPOSAL
Jefferson SchemmerCanadaAnna Fali RENEWAL
Morrow RutaBrazilIvan Magalhaes UNQUALIFIED
Chavez BriddickItalyIvan Magalhaes NEW
Ashley DoeItalyBernardo Dominic NEGOTIATION
Greenwood BologniaCanadaBernardo Dominic QUALIFIED
Greenwood BologniaFranceAsiya Javayant RENEWAL
Clifford RimSpainStephen Shaw UNQUALIFIED
Antonio CaudyRussiaElwin Sharvill RENEWAL
Arvin AlbaresFranceElwin Sharvill QUALIFIED
Clifford RimRussiaAsiya Javayant QUALIFIED
Munro FerenczUnited KingdomElwin Sharvill RENEWAL
Aika InouyeIndiaXuxue Feng PROPOSAL
James ButtJapanAsiya Javayant QUALIFIED
Mujtaba NickaSpainElwin Sharvill NEW
David DarakjySpainXuxue Feng NEW
Nicolas IturbideItalyElwin Sharvill NEGOTIATION
Arvin AlbaresRussiaIvan Magalhaes NEGOTIATION
Costa DilliardJapanBernardo Dominic NEW
Ivar PaprockiBrazilBernardo Dominic UNQUALIFIED
Morrow RutaRussiaAsiya Javayant QUALIFIED
Alejandro PerinAustraliaXuxue Feng RENEWAL
Aditya KuskoIndiaBernardo Dominic RENEWAL
Johnson SergiAustraliaOnyama Limba NEGOTIATION
David DarakjyArgentinaStephen Shaw NEW
Costa DilliardFranceAsiya Javayant NEW
Maisha RulapaughSpainOnyama Limba NEGOTIATION
Sinclair WaycottArgentinaIvan Magalhaes NEGOTIATION
Claire TollnerAustraliaXuxue Feng NEW
Chavez BriddickBrazilAmy Elsner UNQUALIFIED
Murillo MaletGermanyIoni Bowcher NEW
Mujtaba NickaFranceStephen Shaw RENEWAL
David DarakjyUnited KingdomStephen Shaw UNQUALIFIED
Rodrigues CampainGermanyIoni Bowcher UNQUALIFIED
Greenwood BologniaFranceXuxue Feng UNQUALIFIED
Smith GlickGermanyElwin Sharvill UNQUALIFIED
Francesco ShinkoSpainIoni Bowcher UNQUALIFIED
Kaitlin OstroskyCanadaAsiya Javayant NEW
Leon OldroydIndiaIvan Magalhaes UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Jefferson SchemmerIndiaAsiya Javayant PROPOSAL
Kadeem FlosiIndiaIoni Bowcher QUALIFIED
Nicolas IturbideItalyBernardo Dominic UNQUALIFIED
Ashley DoeIndiaAmy Elsner PROPOSAL
Claire TollnerIndiaAnna Fali QUALIFIED
Clifford RimAustraliaXuxue Feng NEW
Claire TollnerRussiaBernardo Dominic NEW
Maria MarrierCanadaStephen Shaw QUALIFIED
Emily WhobreyIndiaOnyama Limba PROPOSAL
Deepesh ChuiCanadaAmy Elsner NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Chavez BriddickRussia2026-04-30Chanay, Jeffrey A Esq QUALIFIED72Stephen Shaw
1001Misaki RoysterJapan2026-05-04Benton, John B Jr QUALIFIED98Bernardo Dominic
1002Rodrigues CampainFrance2026-05-12King, Christopher A Esq UNQUALIFIED30Elwin Sharvill
1003Greenwood BologniaRussia2026-05-19Dorl, James J Esq UNQUALIFIED69Elwin Sharvill
1004Murillo MaletArgentina2026-05-15Benton, John B Jr RENEWAL98Ioni Bowcher
1005Deepesh ChuiRussia2026-04-29Dorl, James J Esq NEW89Bernardo Dominic
1006Smith GlickGermany2026-05-07Chemel, James L Cpa NEW47Onyama Limba
1007James ButtRussia2026-05-07Chapman, Ross E Esq NEGOTIATION79Xuxue Feng
1008Rodrigues CampainSpain2026-05-14Chemel, James L Cpa PROPOSAL35Ivan Magalhaes
1009Murillo MaletGermany2026-05-17King, Christopher A Esq NEGOTIATION97Bernardo Dominic
1010Antonio CaudyGermany2026-04-28Printing Dimensions PROPOSAL99Elwin Sharvill
1011Arvin AlbaresIndia2026-05-15Dorl, James J Esq QUALIFIED61Amy Elsner
1012Munro FerenczUnited Kingdom2026-05-16Buckley Miller Wright UNQUALIFIED38Bernardo Dominic
1013Kaitlin OstroskyCanada2026-05-17Feltz Printing Service UNQUALIFIED32Ivan Magalhaes
1014Salvatore StockhamGermany2026-04-28Dorl, James J Esq PROPOSAL12Bernardo Dominic
1015Ashley DoeFrance2026-05-22Feiner Bros RENEWAL87Anna Fali
1016Ashley DoeRussia2026-04-26Printing Dimensions NEGOTIATION84Amy Elsner
1017Silvio SlusarskiFrance2026-05-03Rangoni Of Florence QUALIFIED32Elwin Sharvill
1018Wickens NestleArgentina2026-05-08Chemel, James L Cpa QUALIFIED33Stephen Shaw
1019Stacey MacleadCanada2026-05-04Benton, John B Jr UNQUALIFIED7Ivan Magalhaes
1020Johnson SergiRussia2026-05-07Chemel, James L Cpa PROPOSAL42Anna Fali
1021Munro FerenczGermany2026-05-09Chemel, James L Cpa PROPOSAL10Onyama Limba
1022Rodrigues CampainRussia2026-04-25Morlong Associates PROPOSAL83Ioni Bowcher
1023James ButtFrance2026-05-13King, Christopher A Esq PROPOSAL34Ioni Bowcher
1024Stacey MacleadFrance2026-05-03Dorl, James J Esq PROPOSAL97Amy Elsner
1025Mujtaba NickaAustralia2026-05-15Morlong Associates UNQUALIFIED69Ivan Magalhaes
1026Salvatore StockhamSpain2026-05-08Chapman, Ross E Esq QUALIFIED27Ioni Bowcher
1027Leon OldroydSpain2026-05-04King, Christopher A Esq NEGOTIATION53Elwin Sharvill
1028Nicolas IturbideUnited Kingdom2026-05-02Chanay, Jeffrey A Esq QUALIFIED15Bernardo Dominic
1029Leja CaldareraSpain2026-05-17Dorl, James J Esq PROPOSAL2Stephen Shaw
1030Leja CaldareraCanada2026-05-09Benton, John B Jr NEW93Asiya Javayant
1031Silvio SlusarskiAustralia2026-05-09King, Christopher A Esq QUALIFIED22Stephen Shaw
1032Francesco ShinkoCanada2026-05-21Truhlar And Truhlar Attys NEGOTIATION77Anna Fali
1033Aditya KuskoSpain2026-05-11Benton, John B Jr UNQUALIFIED7Xuxue Feng
1034Jefferson SchemmerGermany2026-05-21Rousseaux, Michael Esq UNQUALIFIED95Stephen Shaw
1035Jones VocelkaBrazil2026-04-30Chapman, Ross E Esq NEGOTIATION11Xuxue Feng
1036Clifford RimRussia2026-05-08Benton, John B Jr NEGOTIATION44Amy Elsner
1037Deepesh ChuiItaly2026-05-05Commercial Press RENEWAL2Ivan Magalhaes
1038Antonio CaudyAustralia2026-04-25Feiner Bros PROPOSAL59Ivan Magalhaes
1039Julie StensethAustralia2026-04-28Morlong Associates RENEWAL45Ioni Bowcher
1040Izzy GarufiCanada2026-05-09Printing Dimensions QUALIFIED77Onyama Limba
1041Aruna FigeroaArgentina2026-05-08Chanay, Jeffrey A Esq NEW68Asiya Javayant
1042Emily WhobreyIndia2026-05-06Chapman, Ross E Esq NEW8Asiya Javayant
1043Nicolas IturbideRussia2026-05-17Chanay, Jeffrey A Esq QUALIFIED5Onyama Limba
1044Isabel BowleyGermany2026-05-08Chanay, Jeffrey A Esq RENEWAL82Stephen Shaw
1045Murillo MaletFrance2026-04-28Commercial Press RENEWAL96Ioni Bowcher
1046James ButtUnited Kingdom2026-05-02Feiner Bros QUALIFIED11Amy Elsner
1047Murillo MaletBrazil2026-05-07King, Christopher A Esq UNQUALIFIED11Anna Fali
1048Jones VocelkaAustralia2026-05-03Printing Dimensions RENEWAL9Ivan Magalhaes
1049Jeanfrancois VenereUnited Kingdom2026-05-22Chapman, Ross E Esq UNQUALIFIED64Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Misaki RoysterCanadaXuxue Feng RENEWAL
Murillo MaletGermanyAsiya Javayant RENEWAL
Adams MorascaGermanyXuxue Feng NEGOTIATION
Nicolas IturbideUnited KingdomXuxue Feng NEW
Faith GillianItalyAnna Fali RENEWAL
Silvio SlusarskiIndiaAnna Fali PROPOSAL
Ashley DoeAustraliaElwin Sharvill RENEWAL
Jefferson SchemmerSpainIoni Bowcher UNQUALIFIED
Tony FollerCanadaIoni Bowcher QUALIFIED
Murillo MaletIndiaAmy Elsner UNQUALIFIED
Jones VocelkaAustraliaIoni Bowcher QUALIFIED
Silvio SlusarskiJapanIvan Magalhaes UNQUALIFIED
Rodrigues CampainFranceStephen Shaw RENEWAL
Jennifer AmigonCanadaAsiya Javayant NEGOTIATION
Murillo MaletGermanyAnna Fali UNQUALIFIED
Cody SaylorsSpainOnyama Limba UNQUALIFIED
Kadeem FlosiBrazilElwin Sharvill NEGOTIATION
Smith GlickGermanyAsiya Javayant QUALIFIED
Jones VocelkaSpainAnna Fali NEGOTIATION
Aditya KuskoFranceOnyama Limba NEW
Smith GlickSpainStephen Shaw NEW
Silvio SlusarskiGermanyElwin Sharvill NEGOTIATION
Murillo MaletBrazilStephen Shaw UNQUALIFIED
Stacey MacleadAustraliaElwin Sharvill RENEWAL
Jennifer AmigonFranceIvan Magalhaes QUALIFIED
Costa DilliardSpainBernardo Dominic RENEWAL
Aruna FigeroaGermanyElwin Sharvill NEW
Ivar PaprockiFranceOnyama Limba NEW
Costa DilliardAustraliaAnna Fali RENEWAL
Aditya KuskoIndiaAnna Fali QUALIFIED
Jefferson SchemmerSpainIoni Bowcher PROPOSAL
Jennifer AmigonGermanyBernardo Dominic RENEWAL
Francesco ShinkoGermanyAnna Fali NEW
Jeanfrancois VenereAustraliaStephen Shaw RENEWAL
Aika InouyeRussiaAnna Fali QUALIFIED
Rodrigues CampainGermanyIoni Bowcher UNQUALIFIED
Costa DilliardJapanAnna Fali NEW
Arvin AlbaresJapanAnna Fali NEW
Leja CaldareraItalyOnyama Limba NEW
Leja CaldareraGermanyStephen Shaw RENEWAL
Antonio CaudyGermanyBernardo Dominic NEGOTIATION
Kadeem FlosiItalyElwin Sharvill RENEWAL
Francesco ShinkoSpainIvan Magalhaes PROPOSAL
Jeanfrancois VenereRussiaIoni Bowcher QUALIFIED
Costa DilliardFranceXuxue Feng RENEWAL
Antonio CaudyJapanBernardo Dominic PROPOSAL
David DarakjyAustraliaIoni Bowcher UNQUALIFIED
Clifford RimArgentinaStephen Shaw UNQUALIFIED
Maisha RulapaughIndiaAsiya Javayant UNQUALIFIED
Jones VocelkaArgentinaAmy Elsner RENEWAL
Frozen Columns
Name
Smith Glick
Salvatore Stockham
Ashley Doe
Izzy Garufi
Maria Marrier
Kadeem Flosi
Isabel Bowley
Clifford Rim
James Butt
Faith Gillian
Maria Marrier
Stacey Maclead
Aika Inouye
Mayumi Kolmetz
Izzy Garufi
Morrow Ruta
Misaki Royster
Silvio Slusarski
Nicolas Iturbide
Jefferson Schemmer
Jefferson Schemmer
Ivar Paprocki
Francesco Shinko
Morrow Ruta
Arvin Albares
Antonio Caudy
Faith Gillian
Octavia Malet
Misaki Royster
Murillo Malet
Maria Marrier
Antonio Caudy
David Darakjy
Jones Vocelka
Izzy Garufi
Alejandro Perin
Chavez Briddick
Juan Wieser
Greenwood Bolognia
Faith Gillian
David Darakjy
Aditya Kusko
Stacey Maclead
Morrow Ruta
Jennifer Amigon
Silvio Slusarski
Kadeem Flosi
Ashley Doe
Jones Vocelka
Claire Tollner
IdCountryDate
1000Italy2026-05-07
1001India2026-05-02
1002Brazil2026-05-09
1003Italy2026-04-26
1004United Kingdom2026-05-15
1005Germany2026-04-24
1006Spain2026-04-30
1007Japan2026-05-05
1008Japan2026-05-17
1009France2026-05-10
1010Canada2026-05-16
1011United Kingdom2026-05-21
1012France2026-05-17
1013France2026-04-25
1014Germany2026-04-29
1015Japan2026-05-16
1016United Kingdom2026-05-05
1017France2026-05-23
1018Canada2026-05-08
1019Argentina2026-05-06
1020Brazil2026-05-01
1021France2026-05-18
1022Australia2026-04-26
1023Canada2026-05-23
1024Spain2026-05-19
1025Germany2026-05-06
1026India2026-04-24
1027Japan2026-05-14
1028Russia2026-05-17
1029Japan2026-05-02
1030Australia2026-05-08
1031France2026-05-11
1032India2026-05-13
1033Russia2026-05-13
1034Russia2026-05-03
1035Spain2026-04-24
1036India2026-04-24
1037India2026-05-03
1038Brazil2026-05-17
1039Brazil2026-05-11
1040India2026-04-28
1041United Kingdom2026-05-03
1042Russia2026-05-10
1043Japan2026-04-27
1044Japan2026-04-30
1045Argentina2026-05-10
1046Germany2026-05-16
1047Japan2026-05-11
1048Argentina2026-04-24
1049Brazil2026-05-03

On-Demand Data

NameIdCountryDate
Jones Vocelka1000Italy2026-05-23
Munro Ferencz1001Australia2026-05-13
Nicolas Iturbide1002Argentina2026-05-04
Wickens Nestle1003Argentina2026-05-11
Leon Oldroyd1004Russia2026-05-16
Mayumi Kolmetz1005Argentina2026-05-01
Munro Ferencz1006Argentina2026-05-11
Silvio Slusarski1007Australia2026-04-28
Salvatore Stockham1008Japan2026-04-29
Antonio Caudy1009Germany2026-05-23
Johnson Sergi1010Canada2026-05-07
Maria Marrier1011Australia2026-04-25
Morrow Ruta1012Australia2026-05-04
Silvio Slusarski1013Germany2026-05-11
Misaki Royster1014Canada2026-04-27
Mujtaba Nicka1015Canada2026-05-08
Arvin Albares1016Germany2026-05-19
David Darakjy1017India2026-05-06
Aruna Figeroa1018France2026-05-15
Izzy Garufi1019Germany2026-04-24
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Johnson SergiFranceXuxue Feng QUALIFIED
Ashley DoeCanadaIoni Bowcher NEW
Emily WhobreyIndiaIoni Bowcher NEW
Isabel BowleyBrazilAmy Elsner RENEWAL
Nicolas IturbideCanadaElwin Sharvill NEW
Antonio CaudyFranceStephen Shaw RENEWAL
Maisha RulapaughArgentinaIvan Magalhaes RENEWAL
Claire TollnerArgentinaAnna Fali NEW
Johnson SergiJapanStephen Shaw NEGOTIATION
Jefferson SchemmerRussiaElwin Sharvill NEGOTIATION
Juan WieserCanadaIoni Bowcher NEW
Julie StensethJapanIoni Bowcher RENEWAL
Murillo MaletRussiaOnyama Limba RENEWAL
Ricardo GauchoItalyOnyama Limba PROPOSAL
Wickens NestleArgentinaElwin Sharvill NEGOTIATION
Francesco ShinkoArgentinaBernardo Dominic QUALIFIED
Octavia MaletFranceStephen Shaw QUALIFIED
Ashley DoeUnited KingdomOnyama Limba PROPOSAL
Alejandro PerinBrazilAnna Fali UNQUALIFIED
Mujtaba NickaSpainIvan Magalhaes NEW
Aika InouyeCanadaIvan Magalhaes NEGOTIATION
Nicolas IturbideFranceXuxue Feng RENEWAL
Aika InouyeFranceElwin Sharvill UNQUALIFIED
Mujtaba NickaUnited KingdomIoni Bowcher UNQUALIFIED
Adams MorascaBrazilStephen Shaw RENEWAL
Leon OldroydRussiaIoni Bowcher UNQUALIFIED
Aditya KuskoSpainAmy Elsner NEW
Antonio CaudyIndiaAnna Fali RENEWAL
Johnson SergiAustraliaIoni Bowcher QUALIFIED
Aruna FigeroaJapanStephen Shaw QUALIFIED
Deepesh ChuiSpainIoni Bowcher RENEWAL
Deepesh ChuiUnited KingdomStephen Shaw UNQUALIFIED
Claire TollnerRussiaIoni Bowcher PROPOSAL
Stacey MacleadArgentinaStephen Shaw UNQUALIFIED
Nicolas IturbideGermanyAnna Fali QUALIFIED
Maria MarrierCanadaXuxue Feng PROPOSAL
Isabel BowleyFranceXuxue Feng RENEWAL
Aruna FigeroaSpainBernardo Dominic UNQUALIFIED
Cody SaylorsGermanyIvan Magalhaes NEGOTIATION
Clifford RimBrazilXuxue Feng 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>