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
Ashley DoeArgentinaAnna Fali RENEWAL
Maisha RulapaughArgentinaIoni Bowcher RENEWAL
Claire TollnerSpainBernardo Dominic PROPOSAL
Nicolas IturbideBrazilOnyama Limba RENEWAL
Julie StensethJapanOnyama Limba NEW
Wickens NestleJapanXuxue Feng QUALIFIED
Misaki RoysterItalyElwin Sharvill NEGOTIATION
Chavez BriddickRussiaStephen Shaw NEW
Deepesh ChuiRussiaAsiya Javayant NEGOTIATION
Maria MarrierIndiaAmy Elsner NEGOTIATION
Misaki RoysterJapanAsiya Javayant UNQUALIFIED
Clifford RimIndiaAmy Elsner UNQUALIFIED
James ButtItalyXuxue Feng NEGOTIATION
Arvin AlbaresBrazilOnyama Limba PROPOSAL
Ashley DoeArgentinaStephen Shaw QUALIFIED
Antonio CaudyAustraliaStephen Shaw PROPOSAL
Octavia MaletGermanyStephen Shaw UNQUALIFIED
Smith GlickAustraliaIoni Bowcher NEGOTIATION
Faith GillianJapanBernardo Dominic RENEWAL
Arvin AlbaresBrazilAnna Fali UNQUALIFIED
Nicolas IturbideBrazilIoni Bowcher NEW
Jefferson SchemmerBrazilIoni Bowcher NEGOTIATION
Munro FerenczAustraliaOnyama Limba QUALIFIED
Sinclair WaycottBrazilStephen Shaw NEW
Jefferson SchemmerJapanAmy Elsner NEW
Clifford RimArgentinaAmy Elsner PROPOSAL
Adams MorascaRussiaXuxue Feng QUALIFIED
Rodrigues CampainBrazilXuxue Feng NEGOTIATION
Kadeem FlosiJapanElwin Sharvill UNQUALIFIED
Maisha RulapaughAustraliaXuxue Feng PROPOSAL
David DarakjyGermanyXuxue Feng RENEWAL
Rodrigues CampainJapanBernardo Dominic NEGOTIATION
Ricardo GauchoFranceAnna Fali RENEWAL
Claire TollnerAustraliaStephen Shaw PROPOSAL
Leon OldroydJapanIoni Bowcher UNQUALIFIED
Antonio CaudyBrazilIoni Bowcher UNQUALIFIED
Ivar PaprockiSpainIoni Bowcher NEW
Mayumi KolmetzGermanyOnyama Limba QUALIFIED
Wickens NestleGermanyAmy Elsner RENEWAL
Chavez BriddickCanadaOnyama Limba PROPOSAL
Misaki RoysterItalyAnna Fali UNQUALIFIED
Silvio SlusarskiIndiaAnna Fali NEGOTIATION
Misaki RoysterCanadaStephen Shaw PROPOSAL
Chavez BriddickRussiaBernardo Dominic PROPOSAL
David DarakjyFranceBernardo Dominic QUALIFIED
James ButtCanadaOnyama Limba PROPOSAL
Julie StensethSpainXuxue Feng NEW
James ButtJapanAnna Fali RENEWAL
Johnson SergiFranceBernardo Dominic QUALIFIED
Tony FollerGermanyAsiya Javayant QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Mayumi KolmetzBrazilIoni Bowcher QUALIFIED
Salvatore StockhamCanadaOnyama Limba NEGOTIATION
Aditya KuskoSpainAmy Elsner NEW
Maisha RulapaughRussiaStephen Shaw NEGOTIATION
Darci PoquetteItalyIvan Magalhaes PROPOSAL
Antonio CaudyArgentinaStephen Shaw NEGOTIATION
Izzy GarufiIndiaIoni Bowcher QUALIFIED
Silvio SlusarskiJapanIoni Bowcher PROPOSAL
Claire TollnerBrazilAnna Fali NEGOTIATION
Wickens NestleGermanyIvan Magalhaes NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Aruna FigeroaFrance2025-10-03Buckley Miller Wright QUALIFIED20Elwin Sharvill
1001Mayumi KolmetzGermany2025-10-08Chemel, James L Cpa QUALIFIED62Bernardo Dominic
1002Kaitlin OstroskyRussia2025-10-17Rangoni Of Florence UNQUALIFIED88Xuxue Feng
1003Morrow RutaCanada2025-09-30King, Christopher A Esq UNQUALIFIED54Onyama Limba
1004Maisha RulapaughUnited Kingdom2025-10-08Rousseaux, Michael Esq NEGOTIATION32Xuxue Feng
1005Mayumi KolmetzAustralia2025-09-18Truhlar And Truhlar Attys NEW40Onyama Limba
1006Isabel BowleyUnited Kingdom2025-10-14King, Christopher A Esq NEW75Bernardo Dominic
1007Faith GillianSpain2025-10-12King, Christopher A Esq NEW24Elwin Sharvill
1008Greenwood BologniaBrazil2025-10-11Benton, John B Jr QUALIFIED79Amy Elsner
1009Alejandro PerinCanada2025-10-03Rousseaux, Michael Esq QUALIFIED45Ivan Magalhaes
1010Nicolas IturbideGermany2025-10-01Commercial Press RENEWAL4Xuxue Feng
1011Chavez BriddickFrance2025-10-08Morlong Associates RENEWAL45Bernardo Dominic
1012David DarakjyBrazil2025-10-15Rousseaux, Michael Esq QUALIFIED83Amy Elsner
1013Silvio SlusarskiBrazil2025-09-18Rangoni Of Florence NEW28Elwin Sharvill
1014Stacey MacleadJapan2025-09-21Feiner Bros PROPOSAL18Amy Elsner
1015Misaki RoysterArgentina2025-10-16Rousseaux, Michael Esq NEGOTIATION30Bernardo Dominic
1016Munro FerenczIndia2025-09-21Rangoni Of Florence NEW73Asiya Javayant
1017Ivar PaprockiSpain2025-10-04Commercial Press NEW92Anna Fali
1018Sinclair WaycottIndia2025-09-27Rangoni Of Florence PROPOSAL20Anna Fali
1019Adams MorascaCanada2025-09-18Printing Dimensions NEGOTIATION19Xuxue Feng
1020Leja CaldareraRussia2025-09-18Buckley Miller Wright NEW40Xuxue Feng
1021Johnson SergiIndia2025-09-25Feiner Bros NEW37Asiya Javayant
1022Isabel BowleyFrance2025-10-09Rangoni Of Florence QUALIFIED51Ivan Magalhaes
1023Jefferson SchemmerArgentina2025-10-05Rousseaux, Michael Esq QUALIFIED34Elwin Sharvill
1024Jeanfrancois VenereRussia2025-09-18Truhlar And Truhlar Attys PROPOSAL0Bernardo Dominic
1025Darci PoquetteSpain2025-09-19Rousseaux, Michael Esq UNQUALIFIED85Xuxue Feng
1026Stacey MacleadUnited Kingdom2025-09-26Benton, John B Jr NEGOTIATION15Xuxue Feng
1027Jennifer AmigonAustralia2025-10-15Printing Dimensions QUALIFIED26Elwin Sharvill
1028Claire TollnerArgentina2025-09-27King, Christopher A Esq UNQUALIFIED92Ioni Bowcher
1029Stacey MacleadArgentina2025-09-27Chemel, James L Cpa RENEWAL53Bernardo Dominic
1030Claire TollnerGermany2025-10-04Printing Dimensions QUALIFIED28Onyama Limba
1031Darci PoquetteFrance2025-09-22Buckley Miller Wright NEW37Ioni Bowcher
1032Wickens NestleIndia2025-09-27Feiner Bros UNQUALIFIED16Ivan Magalhaes
1033Maria MarrierRussia2025-09-21Morlong Associates NEGOTIATION42Anna Fali
1034Costa DilliardRussia2025-10-06Feiner Bros PROPOSAL39Amy Elsner
1035Arvin AlbaresItaly2025-09-30Dorl, James J Esq RENEWAL85Ioni Bowcher
1036Jefferson SchemmerBrazil2025-10-08Chemel, James L Cpa PROPOSAL27Anna Fali
1037Costa DilliardIndia2025-09-24Benton, John B Jr PROPOSAL94Xuxue Feng
1038Maisha RulapaughBrazil2025-09-21Rangoni Of Florence PROPOSAL92Ioni Bowcher
1039Leon OldroydRussia2025-10-03Truhlar And Truhlar Attys PROPOSAL46Bernardo Dominic
1040Chavez BriddickArgentina2025-10-04Rangoni Of Florence NEGOTIATION51Onyama Limba
1041Ricardo GauchoCanada2025-09-21Truhlar And Truhlar Attys QUALIFIED62Bernardo Dominic
1042Claire TollnerFrance2025-10-05Commercial Press PROPOSAL1Ioni Bowcher
1043Leja CaldareraIndia2025-10-16Truhlar And Truhlar Attys UNQUALIFIED47Bernardo Dominic
1044Antonio CaudyJapan2025-10-10Feltz Printing Service PROPOSAL44Anna Fali
1045Nicolas IturbideFrance2025-10-03Chemel, James L Cpa QUALIFIED67Ioni Bowcher
1046Francesco ShinkoItaly2025-10-02Printing Dimensions NEW22Anna Fali
1047Murillo MaletIndia2025-09-24Buckley Miller Wright NEGOTIATION31Stephen Shaw
1048Rodrigues CampainSpain2025-10-08Chemel, James L Cpa NEW54Elwin Sharvill
1049James ButtArgentina2025-09-30Chapman, Ross E Esq NEW55Bernardo Dominic
Frozen Rows
NameCountryRepresentativeStatus
Arvin AlbaresJapanAmy Elsner RENEWAL
Emily WhobreyFranceElwin Sharvill NEW
Morrow RutaSpainAmy Elsner NEW
Wickens NestleAustraliaStephen Shaw NEW
Alejandro PerinRussiaBernardo Dominic UNQUALIFIED
Salvatore StockhamBrazilIoni Bowcher RENEWAL
Rodrigues CampainGermanyAnna Fali RENEWAL
Claire TollnerItalyIoni Bowcher RENEWAL
Leon OldroydAustraliaXuxue Feng QUALIFIED
Jefferson SchemmerJapanStephen Shaw RENEWAL
Rodrigues CampainArgentinaAmy Elsner UNQUALIFIED
Ricardo GauchoArgentinaStephen Shaw NEW
Clifford RimBrazilIoni Bowcher RENEWAL
Faith GillianUnited KingdomXuxue Feng PROPOSAL
Jones VocelkaItalyStephen Shaw RENEWAL
Claire TollnerBrazilAnna Fali NEGOTIATION
Aika InouyeBrazilIoni Bowcher NEGOTIATION
Mujtaba NickaGermanyElwin Sharvill UNQUALIFIED
Jeanfrancois VenereBrazilAnna Fali UNQUALIFIED
Aika InouyeItalyStephen Shaw UNQUALIFIED
Salvatore StockhamAustraliaIvan Magalhaes NEW
Emily WhobreyAustraliaXuxue Feng NEW
Ricardo GauchoArgentinaIvan Magalhaes NEGOTIATION
Mayumi KolmetzItalyOnyama Limba UNQUALIFIED
Wickens NestleUnited KingdomXuxue Feng QUALIFIED
Morrow RutaItalyIoni Bowcher NEW
Leja CaldareraUnited KingdomAmy Elsner NEGOTIATION
Ivar PaprockiSpainOnyama Limba NEW
Jennifer AmigonRussiaIoni Bowcher QUALIFIED
Aditya KuskoArgentinaAsiya Javayant UNQUALIFIED
Wickens NestleSpainXuxue Feng UNQUALIFIED
Stacey MacleadJapanAsiya Javayant NEGOTIATION
Clifford RimRussiaAmy Elsner NEGOTIATION
Chavez BriddickItalyStephen Shaw NEW
Costa DilliardBrazilXuxue Feng NEGOTIATION
Greenwood BologniaUnited KingdomXuxue Feng NEW
Maisha RulapaughGermanyOnyama Limba RENEWAL
David DarakjyJapanXuxue Feng NEW
Arvin AlbaresIndiaAsiya Javayant NEGOTIATION
Silvio SlusarskiJapanBernardo Dominic NEW
James ButtFranceElwin Sharvill PROPOSAL
Morrow RutaIndiaOnyama Limba NEGOTIATION
Mujtaba NickaAustraliaElwin Sharvill PROPOSAL
Darci PoquetteUnited KingdomXuxue Feng NEGOTIATION
Aika InouyeJapanAsiya Javayant PROPOSAL
Arvin AlbaresJapanElwin Sharvill NEGOTIATION
Deepesh ChuiItalyStephen Shaw NEGOTIATION
Mayumi KolmetzBrazilStephen Shaw PROPOSAL
Alejandro PerinSpainAsiya Javayant NEGOTIATION
Arvin AlbaresJapanIoni Bowcher RENEWAL
Frozen Columns
Name
Costa Dilliard
James Butt
Adams Morasca
Salvatore Stockham
Kaitlin Ostrosky
Jeanfrancois Venere
Izzy Garufi
Nicolas Iturbide
Smith Glick
Johnson Sergi
Jefferson Schemmer
Adams Morasca
Morrow Ruta
Tony Foller
Silvio Slusarski
Izzy Garufi
Nicolas Iturbide
Jennifer Amigon
Misaki Royster
Rodrigues Campain
Jennifer Amigon
Sinclair Waycott
Sinclair Waycott
Octavia Malet
David Darakjy
Antonio Caudy
Cody Saylors
Greenwood Bolognia
Munro Ferencz
Ashley Doe
Juan Wieser
Nicolas Iturbide
Clifford Rim
Izzy Garufi
Ivar Paprocki
Claire Tollner
Jennifer Amigon
Juan Wieser
Morrow Ruta
Mayumi Kolmetz
Misaki Royster
Aditya Kusko
Greenwood Bolognia
Smith Glick
Leon Oldroyd
Leja Caldarera
Jones Vocelka
Silvio Slusarski
Francesco Shinko
Rodrigues Campain
IdCountryDate
1000Brazil2025-09-27
1001Canada2025-10-06
1002Russia2025-09-20
1003Germany2025-09-28
1004France2025-09-26
1005Australia2025-09-21
1006Japan2025-10-17
1007Australia2025-09-23
1008Spain2025-10-17
1009Japan2025-09-25
1010Germany2025-10-16
1011Spain2025-09-29
1012Canada2025-09-21
1013France2025-10-16
1014India2025-10-08
1015France2025-09-27
1016Argentina2025-09-20
1017Germany2025-09-19
1018Argentina2025-10-01
1019France2025-10-11
1020Canada2025-10-08
1021Argentina2025-10-02
1022Brazil2025-09-30
1023Argentina2025-10-04
1024Argentina2025-09-28
1025Russia2025-09-18
1026India2025-09-26
1027Spain2025-09-29
1028Spain2025-10-02
1029France2025-09-19
1030Argentina2025-10-17
1031Canada2025-10-07
1032India2025-09-23
1033Argentina2025-09-27
1034United Kingdom2025-09-24
1035Argentina2025-10-13
1036Italy2025-10-08
1037United Kingdom2025-10-04
1038Spain2025-10-08
1039Italy2025-10-17
1040United Kingdom2025-10-13
1041Russia2025-09-28
1042Argentina2025-10-05
1043Germany2025-10-14
1044Italy2025-09-18
1045Canada2025-09-26
1046Argentina2025-10-05
1047Russia2025-10-01
1048Brazil2025-09-25
1049India2025-09-24

On-Demand Data

NameIdCountryDate
Nicolas Iturbide1000India2025-09-28
Rodrigues Campain1001India2025-09-28
Jennifer Amigon1002Brazil2025-10-02
Aika Inouye1003United Kingdom2025-09-27
Ricardo Gaucho1004Spain2025-10-15
Misaki Royster1005Japan2025-09-26
Leon Oldroyd1006Canada2025-09-27
James Butt1007Italy2025-09-20
Greenwood Bolognia1008India2025-10-10
Wickens Nestle1009Brazil2025-09-21
Kadeem Flosi1010India2025-10-07
Aika Inouye1011Germany2025-10-17
Clifford Rim1012Brazil2025-10-12
Faith Gillian1013Germany2025-10-11
Wickens Nestle1014India2025-10-10
Chavez Briddick1015Italy2025-10-10
Francesco Shinko1016Australia2025-10-10
Ricardo Gaucho1017Canada2025-09-18
Ricardo Gaucho1018United Kingdom2025-10-12
Aditya Kusko1019Australia2025-09-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Clifford RimItalyIvan Magalhaes NEW
Misaki RoysterUnited KingdomStephen Shaw PROPOSAL
Salvatore StockhamCanadaAnna Fali PROPOSAL
David DarakjyIndiaElwin Sharvill QUALIFIED
Clifford RimAustraliaStephen Shaw RENEWAL
Chavez BriddickRussiaStephen Shaw NEGOTIATION
Deepesh ChuiRussiaAnna Fali UNQUALIFIED
James ButtSpainAnna Fali UNQUALIFIED
Rodrigues CampainIndiaElwin Sharvill NEGOTIATION
Deepesh ChuiSpainIoni Bowcher QUALIFIED
Kadeem FlosiCanadaElwin Sharvill NEGOTIATION
Izzy GarufiBrazilBernardo Dominic NEGOTIATION
Emily WhobreyItalyAsiya Javayant RENEWAL
Faith GillianCanadaOnyama Limba NEGOTIATION
Jeanfrancois VenereArgentinaOnyama Limba UNQUALIFIED
Deepesh ChuiGermanyIvan Magalhaes UNQUALIFIED
Maria MarrierIndiaIoni Bowcher RENEWAL
Stacey MacleadItalyAnna Fali UNQUALIFIED
Jennifer AmigonIndiaOnyama Limba UNQUALIFIED
Juan WieserAustraliaAsiya Javayant NEGOTIATION
Jefferson SchemmerItalyAnna Fali UNQUALIFIED
Mujtaba NickaBrazilElwin Sharvill NEGOTIATION
Deepesh ChuiJapanIoni Bowcher PROPOSAL
Jefferson SchemmerRussiaXuxue Feng NEW
Ricardo GauchoItalyXuxue Feng QUALIFIED
Jennifer AmigonSpainBernardo Dominic UNQUALIFIED
Chavez BriddickBrazilAnna Fali PROPOSAL
Cody SaylorsArgentinaBernardo Dominic QUALIFIED
Antonio CaudySpainOnyama Limba QUALIFIED
Julie StensethAustraliaXuxue Feng RENEWAL
Smith GlickUnited KingdomIoni Bowcher PROPOSAL
Ivar PaprockiFranceStephen Shaw NEGOTIATION
Rodrigues CampainUnited KingdomIoni Bowcher NEW
Ivar PaprockiFranceOnyama Limba NEGOTIATION
Cody SaylorsJapanAsiya Javayant NEW
Greenwood BologniaRussiaIoni Bowcher UNQUALIFIED
Sinclair WaycottUnited KingdomAnna Fali QUALIFIED
David DarakjyAustraliaStephen Shaw NEGOTIATION
Adams MorascaGermanyIoni Bowcher NEGOTIATION
Maria MarrierRussiaBernardo Dominic NEGOTIATION

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