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
Adams MorascaIndiaOnyama Limba PROPOSAL
Juan WieserGermanyOnyama Limba PROPOSAL
Antonio CaudyRussiaIoni Bowcher NEGOTIATION
Leon OldroydItalyElwin Sharvill QUALIFIED
James ButtItalyIoni Bowcher NEW
Sinclair WaycottCanadaAmy Elsner QUALIFIED
Ashley DoeRussiaStephen Shaw QUALIFIED
Isabel BowleyRussiaIvan Magalhaes UNQUALIFIED
Jefferson SchemmerBrazilOnyama Limba QUALIFIED
Kaitlin OstroskySpainStephen Shaw PROPOSAL
Deepesh ChuiGermanyAmy Elsner NEW
Munro FerenczGermanyOnyama Limba RENEWAL
Julie StensethJapanXuxue Feng QUALIFIED
Adams MorascaJapanAsiya Javayant QUALIFIED
Tony FollerUnited KingdomXuxue Feng PROPOSAL
Morrow RutaUnited KingdomBernardo Dominic QUALIFIED
Arvin AlbaresIndiaAsiya Javayant UNQUALIFIED
Darci PoquetteRussiaAmy Elsner QUALIFIED
Leon OldroydArgentinaIvan Magalhaes RENEWAL
Wickens NestleCanadaIoni Bowcher NEW
Ivar PaprockiGermanyXuxue Feng NEW
Ricardo GauchoJapanIoni Bowcher QUALIFIED
Antonio CaudyGermanyAsiya Javayant QUALIFIED
Misaki RoysterUnited KingdomIvan Magalhaes RENEWAL
Francesco ShinkoArgentinaElwin Sharvill PROPOSAL
Smith GlickCanadaAnna Fali PROPOSAL
Izzy GarufiItalyIoni Bowcher NEGOTIATION
Emily WhobreyBrazilBernardo Dominic NEW
Mayumi KolmetzJapanStephen Shaw RENEWAL
Salvatore StockhamCanadaAnna Fali UNQUALIFIED
Tony FollerSpainAnna Fali RENEWAL
Johnson SergiCanadaAnna Fali PROPOSAL
Adams MorascaUnited KingdomStephen Shaw PROPOSAL
Silvio SlusarskiItalyOnyama Limba RENEWAL
Misaki RoysterGermanyBernardo Dominic PROPOSAL
Arvin AlbaresFranceBernardo Dominic QUALIFIED
Faith GillianIndiaXuxue Feng PROPOSAL
Smith GlickItalyIoni Bowcher NEW
Tony FollerBrazilIvan Magalhaes NEW
Smith GlickUnited KingdomBernardo Dominic QUALIFIED
Juan WieserRussiaElwin Sharvill PROPOSAL
Rodrigues CampainJapanXuxue Feng QUALIFIED
Leon OldroydCanadaAsiya Javayant RENEWAL
Munro FerenczBrazilAsiya Javayant NEW
Leja CaldareraAustraliaXuxue Feng UNQUALIFIED
Antonio CaudyRussiaBernardo Dominic RENEWAL
Johnson SergiRussiaIoni Bowcher UNQUALIFIED
Stacey MacleadUnited KingdomOnyama Limba QUALIFIED
Costa DilliardArgentinaIvan Magalhaes QUALIFIED
Juan WieserGermanyOnyama Limba NEW
Horizontal
NameCountryRepresentativeStatus
Smith GlickItalyIvan Magalhaes RENEWAL
Silvio SlusarskiSpainBernardo Dominic PROPOSAL
Arvin AlbaresCanadaIvan Magalhaes PROPOSAL
Julie StensethArgentinaXuxue Feng PROPOSAL
Juan WieserRussiaElwin Sharvill RENEWAL
Stacey MacleadGermanyXuxue Feng PROPOSAL
Arvin AlbaresArgentinaAnna Fali RENEWAL
Aika InouyeAustraliaIvan Magalhaes RENEWAL
Murillo MaletBrazilElwin Sharvill PROPOSAL
Greenwood BologniaFranceOnyama Limba NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Kadeem FlosiBrazil2026-05-26Rousseaux, Michael Esq UNQUALIFIED28Stephen Shaw
1001Aditya KuskoSpain2026-05-17Feltz Printing Service RENEWAL48Elwin Sharvill
1002Isabel BowleyUnited Kingdom2026-06-01Truhlar And Truhlar Attys RENEWAL49Amy Elsner
1003Deepesh ChuiSpain2026-05-27Rousseaux, Michael Esq NEW75Onyama Limba
1004Maisha RulapaughBrazil2026-06-02Feiner Bros QUALIFIED33Bernardo Dominic
1005Clifford RimItaly2026-05-09Chanay, Jeffrey A Esq UNQUALIFIED45Asiya Javayant
1006Tony FollerIndia2026-05-25Chapman, Ross E Esq RENEWAL82Asiya Javayant
1007Faith GillianArgentina2026-05-09Printing Dimensions NEGOTIATION99Ioni Bowcher
1008Claire TollnerRussia2026-05-07Rousseaux, Michael Esq NEW1Elwin Sharvill
1009Aditya KuskoItaly2026-05-12Benton, John B Jr QUALIFIED7Stephen Shaw
1010Izzy GarufiAustralia2026-06-05Rangoni Of Florence UNQUALIFIED82Onyama Limba
1011Kaitlin OstroskyFrance2026-05-11Feltz Printing Service QUALIFIED95Ivan Magalhaes
1012Murillo MaletRussia2026-06-03Commercial Press UNQUALIFIED84Ivan Magalhaes
1013Greenwood BologniaRussia2026-05-14Feltz Printing Service PROPOSAL48Elwin Sharvill
1014Alejandro PerinSpain2026-05-20Buckley Miller Wright NEGOTIATION67Onyama Limba
1015Chavez BriddickArgentina2026-05-19Morlong Associates PROPOSAL13Bernardo Dominic
1016Morrow RutaItaly2026-05-16Chemel, James L Cpa QUALIFIED58Stephen Shaw
1017Rodrigues CampainJapan2026-06-03Feltz Printing Service QUALIFIED86Stephen Shaw
1018Rodrigues CampainRussia2026-05-31Chapman, Ross E Esq QUALIFIED73Bernardo Dominic
1019Tony FollerItaly2026-05-12Truhlar And Truhlar Attys PROPOSAL81Ioni Bowcher
1020Faith GillianGermany2026-05-25Commercial Press UNQUALIFIED80Amy Elsner
1021Greenwood BologniaJapan2026-05-15Feltz Printing Service PROPOSAL18Ioni Bowcher
1022Munro FerenczFrance2026-06-02Morlong Associates UNQUALIFIED89Elwin Sharvill
1023Costa DilliardGermany2026-05-17Rousseaux, Michael Esq NEW94Stephen Shaw
1024Stacey MacleadIndia2026-05-20Benton, John B Jr NEW45Onyama Limba
1025Maisha RulapaughFrance2026-06-01Feltz Printing Service PROPOSAL27Xuxue Feng
1026Ashley DoeAustralia2026-05-24Morlong Associates PROPOSAL88Anna Fali
1027Costa DilliardArgentina2026-06-03Printing Dimensions NEGOTIATION35Asiya Javayant
1028Munro FerenczSpain2026-05-26Chanay, Jeffrey A Esq NEW4Anna Fali
1029Ivar PaprockiFrance2026-05-11Chapman, Ross E Esq NEGOTIATION26Elwin Sharvill
1030Smith GlickArgentina2026-05-15Chapman, Ross E Esq PROPOSAL29Bernardo Dominic
1031Deepesh ChuiItaly2026-05-10Truhlar And Truhlar Attys NEW81Anna Fali
1032Greenwood BologniaBrazil2026-05-25Chemel, James L Cpa QUALIFIED57Anna Fali
1033Arvin AlbaresUnited Kingdom2026-05-31Morlong Associates NEGOTIATION24Xuxue Feng
1034Rodrigues CampainIndia2026-06-05Printing Dimensions UNQUALIFIED27Ioni Bowcher
1035Francesco ShinkoFrance2026-06-04Chanay, Jeffrey A Esq PROPOSAL52Stephen Shaw
1036Aditya KuskoGermany2026-05-24Truhlar And Truhlar Attys RENEWAL58Amy Elsner
1037Francesco ShinkoUnited Kingdom2026-05-25Feiner Bros QUALIFIED0Bernardo Dominic
1038Morrow RutaIndia2026-06-02Commercial Press NEW44Asiya Javayant
1039Emily WhobreyRussia2026-05-19Dorl, James J Esq QUALIFIED11Asiya Javayant
1040Ivar PaprockiIndia2026-05-14Buckley Miller Wright QUALIFIED13Amy Elsner
1041Ivar PaprockiAustralia2026-05-18Buckley Miller Wright RENEWAL14Stephen Shaw
1042Silvio SlusarskiRussia2026-05-26Feiner Bros NEGOTIATION90Onyama Limba
1043Wickens NestleJapan2026-06-01Feiner Bros RENEWAL81Ivan Magalhaes
1044Alejandro PerinGermany2026-05-15Chapman, Ross E Esq UNQUALIFIED69Xuxue Feng
1045Antonio CaudyFrance2026-05-23Chanay, Jeffrey A Esq UNQUALIFIED66Xuxue Feng
1046Mujtaba NickaFrance2026-05-17Chanay, Jeffrey A Esq NEW15Elwin Sharvill
1047Leja CaldareraGermany2026-06-01Truhlar And Truhlar Attys UNQUALIFIED44Stephen Shaw
1048Sinclair WaycottAustralia2026-05-16Feiner Bros UNQUALIFIED64Stephen Shaw
1049Morrow RutaUnited Kingdom2026-05-16Commercial Press RENEWAL87Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Tony FollerFranceAnna Fali NEW
Aditya KuskoSpainIvan Magalhaes NEW
Emily WhobreyArgentinaOnyama Limba UNQUALIFIED
Isabel BowleyArgentinaElwin Sharvill RENEWAL
Ivar PaprockiIndiaStephen Shaw PROPOSAL
Murillo MaletJapanOnyama Limba UNQUALIFIED
David DarakjyItalyIoni Bowcher NEW
Maisha RulapaughSpainAsiya Javayant RENEWAL
Mayumi KolmetzAustraliaIvan Magalhaes QUALIFIED
Adams MorascaAustraliaAnna Fali QUALIFIED
Rodrigues CampainBrazilBernardo Dominic NEGOTIATION
Clifford RimSpainXuxue Feng PROPOSAL
Izzy GarufiIndiaXuxue Feng RENEWAL
Emily WhobreyGermanyIvan Magalhaes NEW
Jones VocelkaJapanAmy Elsner PROPOSAL
Deepesh ChuiArgentinaIvan Magalhaes PROPOSAL
Maisha RulapaughUnited KingdomAnna Fali QUALIFIED
Smith GlickGermanyXuxue Feng PROPOSAL
Deepesh ChuiGermanyIoni Bowcher QUALIFIED
Silvio SlusarskiGermanyAnna Fali NEGOTIATION
Stacey MacleadSpainXuxue Feng QUALIFIED
Maisha RulapaughAustraliaOnyama Limba NEGOTIATION
Chavez BriddickJapanOnyama Limba RENEWAL
Faith GillianBrazilIvan Magalhaes QUALIFIED
Smith GlickItalyIoni Bowcher NEGOTIATION
Jefferson SchemmerGermanyAnna Fali NEW
Adams MorascaCanadaIvan Magalhaes NEGOTIATION
Tony FollerAustraliaAnna Fali QUALIFIED
Adams MorascaBrazilOnyama Limba NEGOTIATION
Leja CaldareraCanadaXuxue Feng NEW
Aika InouyeUnited KingdomBernardo Dominic UNQUALIFIED
Jennifer AmigonUnited KingdomOnyama Limba UNQUALIFIED
Jeanfrancois VenereIndiaOnyama Limba UNQUALIFIED
Jennifer AmigonSpainIvan Magalhaes NEW
Juan WieserCanadaStephen Shaw RENEWAL
Arvin AlbaresItalyStephen Shaw RENEWAL
Jennifer AmigonFranceIoni Bowcher QUALIFIED
Arvin AlbaresUnited KingdomElwin Sharvill NEGOTIATION
Faith GillianJapanIoni Bowcher RENEWAL
Aika InouyeBrazilOnyama Limba UNQUALIFIED
Arvin AlbaresCanadaAnna Fali PROPOSAL
Julie StensethUnited KingdomAnna Fali UNQUALIFIED
Jennifer AmigonRussiaElwin Sharvill NEGOTIATION
Costa DilliardCanadaOnyama Limba RENEWAL
Johnson SergiJapanBernardo Dominic NEW
Arvin AlbaresRussiaIvan Magalhaes NEGOTIATION
Faith GillianAustraliaAsiya Javayant PROPOSAL
Mayumi KolmetzSpainIvan Magalhaes RENEWAL
James ButtGermanyStephen Shaw NEW
Aditya KuskoFranceIvan Magalhaes NEGOTIATION
Frozen Columns
Name
Ashley Doe
Jones Vocelka
Aditya Kusko
Munro Ferencz
Emily Whobrey
Juan Wieser
Aditya Kusko
Chavez Briddick
Ashley Doe
Claire Tollner
Emily Whobrey
Juan Wieser
Nicolas Iturbide
Salvatore Stockham
Jeanfrancois Venere
Nicolas Iturbide
Kadeem Flosi
Jones Vocelka
Maisha Rulapaugh
Jefferson Schemmer
Rodrigues Campain
Chavez Briddick
Jefferson Schemmer
Aika Inouye
Silvio Slusarski
Deepesh Chui
Maisha Rulapaugh
Ricardo Gaucho
Alejandro Perin
Wickens Nestle
Smith Glick
Nicolas Iturbide
Smith Glick
Clifford Rim
Claire Tollner
Aika Inouye
Jennifer Amigon
Mayumi Kolmetz
Aruna Figeroa
David Darakjy
Greenwood Bolognia
Kadeem Flosi
Octavia Malet
Nicolas Iturbide
Salvatore Stockham
Deepesh Chui
Clifford Rim
Munro Ferencz
Darci Poquette
David Darakjy
IdCountryDate
1000Germany2026-05-08
1001Argentina2026-06-05
1002Japan2026-05-11
1003France2026-05-11
1004Australia2026-06-01
1005Russia2026-05-30
1006Australia2026-05-10
1007France2026-05-27
1008Russia2026-05-30
1009France2026-05-11
1010Argentina2026-05-27
1011Spain2026-05-11
1012France2026-05-24
1013Germany2026-05-20
1014Japan2026-05-15
1015Germany2026-05-25
1016Italy2026-05-29
1017France2026-05-19
1018Australia2026-05-30
1019Canada2026-05-23
1020Spain2026-05-18
1021India2026-05-08
1022Canada2026-06-05
1023Japan2026-05-27
1024Japan2026-05-31
1025United Kingdom2026-05-17
1026United Kingdom2026-05-27
1027Argentina2026-05-09
1028Spain2026-05-27
1029Canada2026-05-14
1030Brazil2026-06-05
1031Germany2026-05-13
1032Germany2026-05-08
1033France2026-06-04
1034Italy2026-06-03
1035Brazil2026-05-18
1036India2026-05-15
1037Australia2026-06-02
1038Japan2026-05-26
1039Australia2026-05-22
1040Argentina2026-05-22
1041Germany2026-05-20
1042Russia2026-05-29
1043France2026-05-07
1044Brazil2026-05-24
1045Russia2026-05-29
1046Australia2026-05-30
1047Argentina2026-05-07
1048France2026-05-17
1049France2026-05-17

On-Demand Data

NameIdCountryDate
Antonio Caudy1000Spain2026-05-27
Darci Poquette1001United Kingdom2026-05-18
Maria Marrier1002Australia2026-05-22
Aika Inouye1003India2026-05-08
Wickens Nestle1004Argentina2026-05-22
Smith Glick1005Brazil2026-06-04
Aditya Kusko1006Argentina2026-05-15
David Darakjy1007Japan2026-05-13
Juan Wieser1008Russia2026-05-11
Jones Vocelka1009Italy2026-05-25
Deepesh Chui1010Russia2026-05-07
Salvatore Stockham1011India2026-05-23
Isabel Bowley1012Russia2026-05-16
Darci Poquette1013United Kingdom2026-05-29
Ashley Doe1014India2026-05-26
Kaitlin Ostrosky1015Italy2026-05-10
Antonio Caudy1016Italy2026-05-17
Munro Ferencz1017Brazil2026-05-10
Mujtaba Nicka1018Australia2026-05-27
Aika Inouye1019Spain2026-05-26
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jennifer AmigonUnited KingdomAsiya Javayant NEW
Aika InouyeIndiaAsiya Javayant NEGOTIATION
Aruna FigeroaFranceOnyama Limba NEW
Adams MorascaCanadaXuxue Feng NEGOTIATION
Munro FerenczFranceAsiya Javayant UNQUALIFIED
Murillo MaletGermanyStephen Shaw RENEWAL
Jennifer AmigonCanadaIvan Magalhaes RENEWAL
Juan WieserRussiaAmy Elsner PROPOSAL
Isabel BowleyArgentinaBernardo Dominic QUALIFIED
Maisha RulapaughArgentinaAsiya Javayant UNQUALIFIED
Wickens NestleItalyAnna Fali RENEWAL
Aruna FigeroaGermanyBernardo Dominic UNQUALIFIED
Darci PoquetteIndiaIvan Magalhaes QUALIFIED
Morrow RutaCanadaAmy Elsner RENEWAL
Mujtaba NickaBrazilOnyama Limba RENEWAL
Silvio SlusarskiArgentinaAsiya Javayant PROPOSAL
Jefferson SchemmerCanadaIvan Magalhaes RENEWAL
Leja CaldareraRussiaBernardo Dominic NEW
Antonio CaudyAustraliaOnyama Limba QUALIFIED
Ivar PaprockiArgentinaIoni Bowcher NEGOTIATION
Misaki RoysterFranceIoni Bowcher NEW
Wickens NestleCanadaIoni Bowcher NEGOTIATION
Smith GlickUnited KingdomIoni Bowcher UNQUALIFIED
Juan WieserCanadaStephen Shaw NEW
Clifford RimCanadaIoni Bowcher PROPOSAL
Jones VocelkaBrazilIoni Bowcher UNQUALIFIED
Julie StensethUnited KingdomAmy Elsner NEW
Jeanfrancois VenereJapanAmy Elsner NEW
Octavia MaletArgentinaAnna Fali RENEWAL
Jefferson SchemmerUnited KingdomAmy Elsner NEW
Jeanfrancois VenereUnited KingdomIvan Magalhaes PROPOSAL
James ButtUnited KingdomStephen Shaw QUALIFIED
Aruna FigeroaSpainAnna Fali PROPOSAL
Misaki RoysterCanadaElwin Sharvill PROPOSAL
Jones VocelkaJapanBernardo Dominic UNQUALIFIED
Jeanfrancois VenereJapanOnyama Limba NEW
Arvin AlbaresArgentinaIvan Magalhaes PROPOSAL
Jeanfrancois VenereSpainXuxue Feng RENEWAL
Maria MarrierGermanyBernardo Dominic NEW
Jefferson SchemmerItalyAnna Fali 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>