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 TollnerGermanyIvan Magalhaes NEGOTIATION
Francesco ShinkoCanadaElwin Sharvill QUALIFIED
Clifford RimArgentinaStephen Shaw RENEWAL
Salvatore StockhamSpainStephen Shaw QUALIFIED
Clifford RimUnited KingdomXuxue Feng PROPOSAL
Rodrigues CampainUnited KingdomIvan Magalhaes QUALIFIED
Misaki RoysterCanadaElwin Sharvill UNQUALIFIED
Wickens NestleSpainXuxue Feng QUALIFIED
Claire TollnerCanadaAnna Fali NEW
Francesco ShinkoGermanyAnna Fali NEGOTIATION
Maisha RulapaughCanadaAsiya Javayant PROPOSAL
David DarakjyFranceIoni Bowcher UNQUALIFIED
Aditya KuskoIndiaIvan Magalhaes PROPOSAL
Salvatore StockhamGermanyAsiya Javayant UNQUALIFIED
Julie StensethArgentinaStephen Shaw NEW
Alejandro PerinArgentinaAsiya Javayant RENEWAL
Adams MorascaArgentinaBernardo Dominic RENEWAL
Costa DilliardCanadaStephen Shaw UNQUALIFIED
Johnson SergiUnited KingdomAsiya Javayant NEGOTIATION
Wickens NestleItalyStephen Shaw UNQUALIFIED
Juan WieserGermanyXuxue Feng NEW
Julie StensethGermanyElwin Sharvill NEW
Claire TollnerItalyAsiya Javayant PROPOSAL
Clifford RimUnited KingdomIvan Magalhaes NEW
Leja CaldareraIndiaAsiya Javayant RENEWAL
Leon OldroydBrazilAmy Elsner NEGOTIATION
James ButtJapanBernardo Dominic UNQUALIFIED
Misaki RoysterGermanyOnyama Limba RENEWAL
Ashley DoeBrazilElwin Sharvill UNQUALIFIED
Aika InouyeCanadaStephen Shaw RENEWAL
Izzy GarufiSpainXuxue Feng UNQUALIFIED
James ButtRussiaXuxue Feng NEW
Ashley DoeArgentinaIvan Magalhaes RENEWAL
Mujtaba NickaJapanXuxue Feng QUALIFIED
Salvatore StockhamJapanStephen Shaw RENEWAL
Silvio SlusarskiFranceIvan Magalhaes UNQUALIFIED
Arvin AlbaresBrazilIvan Magalhaes NEW
Stacey MacleadItalyElwin Sharvill RENEWAL
Izzy GarufiGermanyOnyama Limba RENEWAL
Clifford RimJapanBernardo Dominic NEGOTIATION
James ButtGermanyOnyama Limba RENEWAL
Cody SaylorsAustraliaBernardo Dominic RENEWAL
Clifford RimUnited KingdomAsiya Javayant QUALIFIED
Jeanfrancois VenereIndiaBernardo Dominic UNQUALIFIED
James ButtIndiaElwin Sharvill NEGOTIATION
Ivar PaprockiIndiaAmy Elsner RENEWAL
Emily WhobreyRussiaIvan Magalhaes PROPOSAL
Jefferson SchemmerAustraliaIoni Bowcher UNQUALIFIED
Maria MarrierRussiaIvan Magalhaes PROPOSAL
Jones VocelkaUnited KingdomOnyama Limba NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
David DarakjyAustraliaOnyama Limba NEW
Izzy GarufiAustraliaAnna Fali NEGOTIATION
Kadeem FlosiBrazilAnna Fali UNQUALIFIED
Julie StensethFranceIvan Magalhaes UNQUALIFIED
Aditya KuskoRussiaIoni Bowcher NEW
Jones VocelkaSpainAsiya Javayant PROPOSAL
Darci PoquetteRussiaStephen Shaw NEW
Clifford RimArgentinaOnyama Limba QUALIFIED
Adams MorascaGermanyStephen Shaw PROPOSAL
Octavia MaletSpainXuxue Feng UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Darci PoquetteUnited Kingdom2026-05-15Chanay, Jeffrey A Esq NEW19Asiya Javayant
1001Tony FollerAustralia2026-04-25Feiner Bros NEGOTIATION34Stephen Shaw
1002Sinclair WaycottBrazil2026-05-11Rangoni Of Florence QUALIFIED47Xuxue Feng
1003Faith GillianAustralia2026-05-14Morlong Associates RENEWAL11Stephen Shaw
1004Mayumi KolmetzUnited Kingdom2026-05-14Morlong Associates UNQUALIFIED11Ivan Magalhaes
1005Leja CaldareraItaly2026-05-08Rousseaux, Michael Esq UNQUALIFIED97Ioni Bowcher
1006James ButtAustralia2026-05-04Rangoni Of Florence QUALIFIED45Stephen Shaw
1007Jeanfrancois VenereRussia2026-05-12Commercial Press NEGOTIATION37Elwin Sharvill
1008Johnson SergiFrance2026-05-12Rousseaux, Michael Esq QUALIFIED27Anna Fali
1009Stacey MacleadCanada2026-04-29Rousseaux, Michael Esq NEW22Ioni Bowcher
1010Jennifer AmigonCanada2026-04-22Buckley Miller Wright UNQUALIFIED78Asiya Javayant
1011Octavia MaletRussia2026-04-23Commercial Press NEW17Stephen Shaw
1012Ashley DoeCanada2026-04-19Feiner Bros QUALIFIED20Onyama Limba
1013Ashley DoeRussia2026-04-26Rangoni Of Florence QUALIFIED82Xuxue Feng
1014David DarakjySpain2026-04-18Rangoni Of Florence UNQUALIFIED61Asiya Javayant
1015Jennifer AmigonItaly2026-04-18Buckley Miller Wright RENEWAL90Onyama Limba
1016Izzy GarufiCanada2026-04-24Feiner Bros NEW78Asiya Javayant
1017Alejandro PerinBrazil2026-05-13Chemel, James L Cpa PROPOSAL85Xuxue Feng
1018Emily WhobreyGermany2026-04-19Chemel, James L Cpa RENEWAL43Anna Fali
1019Kaitlin OstroskyFrance2026-04-19Commercial Press NEW68Asiya Javayant
1020Munro FerenczJapan2026-04-24Benton, John B Jr NEGOTIATION52Ivan Magalhaes
1021Costa DilliardSpain2026-05-01Buckley Miller Wright PROPOSAL97Ivan Magalhaes
1022Wickens NestleArgentina2026-04-17Truhlar And Truhlar Attys NEGOTIATION7Stephen Shaw
1023Cody SaylorsBrazil2026-04-19Feiner Bros NEGOTIATION25Ioni Bowcher
1024Kadeem FlosiFrance2026-05-08Feltz Printing Service NEGOTIATION91Elwin Sharvill
1025Rodrigues CampainUnited Kingdom2026-04-24Benton, John B Jr RENEWAL72Elwin Sharvill
1026Julie StensethUnited Kingdom2026-04-27Chapman, Ross E Esq UNQUALIFIED12Xuxue Feng
1027Emily WhobreySpain2026-04-26Rousseaux, Michael Esq NEW31Amy Elsner
1028James ButtIndia2026-04-17Rangoni Of Florence PROPOSAL3Onyama Limba
1029Misaki RoysterRussia2026-04-28Rangoni Of Florence RENEWAL91Xuxue Feng
1030Francesco ShinkoSpain2026-05-07Chemel, James L Cpa NEW42Asiya Javayant
1031Smith GlickFrance2026-04-23Commercial Press NEGOTIATION9Amy Elsner
1032Izzy GarufiCanada2026-04-29Rousseaux, Michael Esq RENEWAL1Anna Fali
1033Jones VocelkaItaly2026-04-25Commercial Press NEW66Onyama Limba
1034Tony FollerArgentina2026-04-18Benton, John B Jr NEGOTIATION6Onyama Limba
1035Misaki RoysterCanada2026-04-18Morlong Associates RENEWAL99Onyama Limba
1036Aditya KuskoGermany2026-05-14Printing Dimensions NEW45Xuxue Feng
1037Octavia MaletSpain2026-05-11Chanay, Jeffrey A Esq PROPOSAL63Anna Fali
1038Jennifer AmigonUnited Kingdom2026-05-13Rangoni Of Florence UNQUALIFIED21Asiya Javayant
1039Mayumi KolmetzFrance2026-04-18King, Christopher A Esq PROPOSAL60Amy Elsner
1040Morrow RutaFrance2026-04-30Rousseaux, Michael Esq UNQUALIFIED28Elwin Sharvill
1041Salvatore StockhamArgentina2026-04-30Chemel, James L Cpa PROPOSAL96Ioni Bowcher
1042Octavia MaletBrazil2026-05-07Printing Dimensions RENEWAL4Amy Elsner
1043Octavia MaletJapan2026-04-23Chemel, James L Cpa NEGOTIATION97Stephen Shaw
1044Arvin AlbaresGermany2026-05-04Chemel, James L Cpa UNQUALIFIED37Amy Elsner
1045Wickens NestleSpain2026-05-06Commercial Press PROPOSAL21Asiya Javayant
1046Chavez BriddickRussia2026-04-19Rousseaux, Michael Esq UNQUALIFIED83Bernardo Dominic
1047Wickens NestleFrance2026-04-28Dorl, James J Esq UNQUALIFIED21Elwin Sharvill
1048Nicolas IturbideItaly2026-04-16Rangoni Of Florence QUALIFIED35Stephen Shaw
1049Faith GillianArgentina2026-04-27Chapman, Ross E Esq NEW87Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Silvio SlusarskiJapanBernardo Dominic NEW
Aditya KuskoJapanXuxue Feng UNQUALIFIED
Silvio SlusarskiSpainOnyama Limba PROPOSAL
Chavez BriddickItalyElwin Sharvill RENEWAL
Isabel BowleyUnited KingdomStephen Shaw RENEWAL
Morrow RutaCanadaXuxue Feng QUALIFIED
Rodrigues CampainJapanXuxue Feng NEGOTIATION
Kaitlin OstroskyFranceBernardo Dominic UNQUALIFIED
Morrow RutaIndiaAmy Elsner NEGOTIATION
Faith GillianIndiaStephen Shaw RENEWAL
Francesco ShinkoRussiaAmy Elsner NEW
Kadeem FlosiAustraliaAnna Fali PROPOSAL
Misaki RoysterRussiaOnyama Limba NEW
Costa DilliardRussiaAsiya Javayant NEW
Juan WieserJapanAnna Fali PROPOSAL
Tony FollerItalyIvan Magalhaes RENEWAL
Tony FollerCanadaIoni Bowcher QUALIFIED
Tony FollerCanadaAmy Elsner QUALIFIED
Deepesh ChuiRussiaIvan Magalhaes NEW
Ricardo GauchoGermanyBernardo Dominic UNQUALIFIED
Faith GillianItalyIoni Bowcher QUALIFIED
Emily WhobreySpainIoni Bowcher NEW
Morrow RutaFranceAmy Elsner QUALIFIED
Kaitlin OstroskySpainAsiya Javayant UNQUALIFIED
Clifford RimFranceIoni Bowcher QUALIFIED
Jennifer AmigonGermanyXuxue Feng QUALIFIED
Costa DilliardRussiaElwin Sharvill UNQUALIFIED
Maria MarrierIndiaIvan Magalhaes NEW
Faith GillianUnited KingdomAmy Elsner UNQUALIFIED
Ashley DoeAustraliaElwin Sharvill NEW
Clifford RimItalyAmy Elsner PROPOSAL
Sinclair WaycottItalyAsiya Javayant PROPOSAL
Darci PoquetteGermanyIvan Magalhaes NEW
Maria MarrierJapanIoni Bowcher PROPOSAL
Faith GillianFranceXuxue Feng PROPOSAL
Kadeem FlosiIndiaElwin Sharvill UNQUALIFIED
Misaki RoysterUnited KingdomAmy Elsner NEGOTIATION
Johnson SergiSpainIvan Magalhaes RENEWAL
Ashley DoeArgentinaBernardo Dominic RENEWAL
Kadeem FlosiFranceAsiya Javayant NEGOTIATION
Kaitlin OstroskyUnited KingdomIoni Bowcher UNQUALIFIED
Mujtaba NickaJapanAnna Fali NEGOTIATION
Maisha RulapaughArgentinaStephen Shaw NEW
Leon OldroydIndiaStephen Shaw QUALIFIED
Clifford RimItalyXuxue Feng QUALIFIED
Murillo MaletCanadaOnyama Limba NEGOTIATION
Juan WieserIndiaXuxue Feng NEW
Maisha RulapaughBrazilXuxue Feng RENEWAL
Salvatore StockhamFranceXuxue Feng RENEWAL
Aika InouyeFranceBernardo Dominic RENEWAL
Frozen Columns
Name
Claire Tollner
Claire Tollner
Jennifer Amigon
Salvatore Stockham
Tony Foller
Tony Foller
Costa Dilliard
Izzy Garufi
Salvatore Stockham
Ashley Doe
Jeanfrancois Venere
Arvin Albares
Kaitlin Ostrosky
David Darakjy
Stacey Maclead
Costa Dilliard
Ricardo Gaucho
Juan Wieser
Kaitlin Ostrosky
Munro Ferencz
Aditya Kusko
Francesco Shinko
Alejandro Perin
Misaki Royster
Kadeem Flosi
Salvatore Stockham
Kaitlin Ostrosky
Stacey Maclead
Maisha Rulapaugh
Jefferson Schemmer
Greenwood Bolognia
Aditya Kusko
Claire Tollner
Jefferson Schemmer
Leja Caldarera
Juan Wieser
Maisha Rulapaugh
Arvin Albares
Faith Gillian
Silvio Slusarski
Francesco Shinko
Nicolas Iturbide
Tony Foller
Rodrigues Campain
Chavez Briddick
Stacey Maclead
Kaitlin Ostrosky
Faith Gillian
Emily Whobrey
Claire Tollner
IdCountryDate
1000Spain2026-04-25
1001Argentina2026-05-08
1002Spain2026-05-14
1003Argentina2026-05-02
1004Japan2026-05-01
1005Canada2026-04-30
1006Canada2026-05-14
1007United Kingdom2026-05-08
1008Germany2026-05-12
1009Brazil2026-05-03
1010United Kingdom2026-04-28
1011Japan2026-04-22
1012Russia2026-04-25
1013United Kingdom2026-04-17
1014Italy2026-05-08
1015Canada2026-05-06
1016India2026-05-04
1017United Kingdom2026-05-11
1018Italy2026-05-12
1019Russia2026-05-07
1020France2026-04-19
1021Canada2026-04-28
1022Italy2026-04-23
1023Germany2026-05-05
1024Argentina2026-04-25
1025France2026-05-11
1026Italy2026-04-29
1027Canada2026-04-19
1028Brazil2026-05-12
1029Canada2026-05-02
1030Argentina2026-04-19
1031Spain2026-05-08
1032Italy2026-05-10
1033Canada2026-05-14
1034Canada2026-04-27
1035Australia2026-04-21
1036India2026-05-06
1037France2026-05-15
1038Germany2026-04-16
1039Germany2026-05-11
1040Russia2026-04-30
1041United Kingdom2026-05-05
1042Argentina2026-04-28
1043Brazil2026-04-29
1044United Kingdom2026-04-30
1045Canada2026-04-24
1046Italy2026-05-05
1047India2026-05-03
1048United Kingdom2026-05-14
1049France2026-05-15

On-Demand Data

NameIdCountryDate
Aditya Kusko1000Italy2026-05-03
Deepesh Chui1001Canada2026-04-30
Morrow Ruta1002Australia2026-05-12
Antonio Caudy1003Australia2026-05-01
Jones Vocelka1004France2026-04-20
Murillo Malet1005United Kingdom2026-04-30
Jefferson Schemmer1006Argentina2026-05-10
Murillo Malet1007Russia2026-04-22
Costa Dilliard1008United Kingdom2026-04-20
Maria Marrier1009Canada2026-05-06
Aruna Figeroa1010Argentina2026-04-17
Francesco Shinko1011Spain2026-04-28
Claire Tollner1012India2026-05-09
Aika Inouye1013India2026-05-04
Morrow Ruta1014Australia2026-05-14
Nicolas Iturbide1015Italy2026-05-05
Aika Inouye1016Canada2026-05-15
Mayumi Kolmetz1017Russia2026-04-23
Leja Caldarera1018Brazil2026-04-17
Morrow Ruta1019Argentina2026-05-14
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Francesco ShinkoBrazilBernardo Dominic NEW
Jefferson SchemmerArgentinaElwin Sharvill NEGOTIATION
Darci PoquetteIndiaElwin Sharvill RENEWAL
Mujtaba NickaArgentinaElwin Sharvill NEW
Juan WieserFranceStephen Shaw QUALIFIED
Jefferson SchemmerItalyStephen Shaw RENEWAL
Silvio SlusarskiArgentinaElwin Sharvill PROPOSAL
Rodrigues CampainUnited KingdomXuxue Feng NEGOTIATION
Juan WieserAustraliaAmy Elsner UNQUALIFIED
Kadeem FlosiItalyAmy Elsner UNQUALIFIED
Smith GlickFranceOnyama Limba RENEWAL
Aika InouyeRussiaIvan Magalhaes QUALIFIED
Aruna FigeroaCanadaBernardo Dominic NEGOTIATION
Julie StensethArgentinaXuxue Feng NEGOTIATION
Costa DilliardCanadaIvan Magalhaes RENEWAL
Antonio CaudyUnited KingdomAmy Elsner PROPOSAL
Alejandro PerinGermanyAmy Elsner PROPOSAL
Costa DilliardArgentinaXuxue Feng RENEWAL
Leon OldroydUnited KingdomAsiya Javayant RENEWAL
Mujtaba NickaBrazilAnna Fali QUALIFIED
Clifford RimFranceBernardo Dominic QUALIFIED
Emily WhobreyBrazilOnyama Limba PROPOSAL
Kadeem FlosiBrazilAnna Fali QUALIFIED
Rodrigues CampainJapanAnna Fali RENEWAL
Julie StensethFranceAmy Elsner RENEWAL
Morrow RutaItalyOnyama Limba NEW
Mayumi KolmetzCanadaBernardo Dominic UNQUALIFIED
Mayumi KolmetzArgentinaAmy Elsner NEGOTIATION
Silvio SlusarskiSpainIvan Magalhaes RENEWAL
Deepesh ChuiItalyIvan Magalhaes RENEWAL
Claire TollnerRussiaAsiya Javayant PROPOSAL
Morrow RutaBrazilIoni Bowcher QUALIFIED
Arvin AlbaresItalyAnna Fali QUALIFIED
Wickens NestleItalyBernardo Dominic RENEWAL
Izzy GarufiJapanIvan Magalhaes PROPOSAL
James ButtAustraliaIvan Magalhaes QUALIFIED
Alejandro PerinGermanyElwin Sharvill NEW
Misaki RoysterArgentinaAnna Fali NEW
Francesco ShinkoArgentinaAnna Fali NEW
Aika InouyeArgentinaAmy Elsner 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>