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
Aruna FigeroaIndiaIoni Bowcher NEW
Jeanfrancois VenereGermanyElwin Sharvill QUALIFIED
James ButtFranceBernardo Dominic QUALIFIED
Ricardo GauchoRussiaOnyama Limba QUALIFIED
Clifford RimGermanyElwin Sharvill QUALIFIED
Salvatore StockhamArgentinaAsiya Javayant RENEWAL
Arvin AlbaresGermanyStephen Shaw UNQUALIFIED
Clifford RimGermanyAmy Elsner UNQUALIFIED
Adams MorascaUnited KingdomAsiya Javayant PROPOSAL
Nicolas IturbideAustraliaElwin Sharvill PROPOSAL
Jennifer AmigonArgentinaXuxue Feng UNQUALIFIED
Mujtaba NickaRussiaOnyama Limba NEGOTIATION
Costa DilliardBrazilAsiya Javayant RENEWAL
Leja CaldareraAustraliaElwin Sharvill PROPOSAL
Greenwood BologniaGermanyXuxue Feng UNQUALIFIED
David DarakjyAustraliaOnyama Limba QUALIFIED
Julie StensethJapanOnyama Limba NEW
Munro FerenczCanadaAmy Elsner RENEWAL
Isabel BowleyJapanAmy Elsner QUALIFIED
Ivar PaprockiFranceIoni Bowcher RENEWAL
Ivar PaprockiRussiaBernardo Dominic RENEWAL
Julie StensethItalyAnna Fali PROPOSAL
Tony FollerItalyAnna Fali NEGOTIATION
Salvatore StockhamCanadaElwin Sharvill NEW
Izzy GarufiArgentinaIoni Bowcher QUALIFIED
Jefferson SchemmerUnited KingdomBernardo Dominic NEW
Johnson SergiRussiaOnyama Limba QUALIFIED
Misaki RoysterBrazilIvan Magalhaes PROPOSAL
Jones VocelkaSpainOnyama Limba RENEWAL
Morrow RutaJapanIvan Magalhaes NEGOTIATION
Faith GillianJapanXuxue Feng UNQUALIFIED
Juan WieserAustraliaAmy Elsner UNQUALIFIED
Jeanfrancois VenereIndiaXuxue Feng RENEWAL
Antonio CaudyGermanyOnyama Limba RENEWAL
Julie StensethJapanIvan Magalhaes RENEWAL
Salvatore StockhamItalyStephen Shaw NEW
Johnson SergiFranceIvan Magalhaes NEW
Morrow RutaJapanXuxue Feng QUALIFIED
Wickens NestleBrazilBernardo Dominic QUALIFIED
Ivar PaprockiArgentinaIoni Bowcher PROPOSAL
Salvatore StockhamSpainAnna Fali UNQUALIFIED
Aika InouyeArgentinaBernardo Dominic NEW
Wickens NestleSpainIvan Magalhaes RENEWAL
Deepesh ChuiFranceIvan Magalhaes PROPOSAL
Mujtaba NickaItalyElwin Sharvill UNQUALIFIED
Nicolas IturbideGermanyOnyama Limba UNQUALIFIED
Jeanfrancois VenereFranceIvan Magalhaes NEW
Sinclair WaycottJapanAnna Fali NEGOTIATION
Cody SaylorsSpainXuxue Feng UNQUALIFIED
Emily WhobreyRussiaAnna Fali NEW
Horizontal
NameCountryRepresentativeStatus
Clifford RimJapanStephen Shaw PROPOSAL
Mujtaba NickaItalyXuxue Feng NEW
Ricardo GauchoUnited KingdomIoni Bowcher QUALIFIED
Octavia MaletGermanyIoni Bowcher QUALIFIED
Morrow RutaBrazilAmy Elsner RENEWAL
Clifford RimRussiaElwin Sharvill QUALIFIED
Nicolas IturbideSpainXuxue Feng QUALIFIED
Mayumi KolmetzIndiaAsiya Javayant NEGOTIATION
Silvio SlusarskiGermanyIoni Bowcher QUALIFIED
Aruna FigeroaSpainAsiya Javayant NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Jennifer AmigonUnited Kingdom2026-06-04Chanay, Jeffrey A Esq QUALIFIED77Xuxue Feng
1001Salvatore StockhamGermany2026-05-09Rangoni Of Florence UNQUALIFIED35Elwin Sharvill
1002Jeanfrancois VenereSpain2026-05-18Chanay, Jeffrey A Esq RENEWAL90Ivan Magalhaes
1003Tony FollerRussia2026-05-18Rangoni Of Florence RENEWAL61Ioni Bowcher
1004Jefferson SchemmerBrazil2026-05-24Chanay, Jeffrey A Esq UNQUALIFIED88Anna Fali
1005Cody SaylorsSpain2026-05-19Feiner Bros RENEWAL63Stephen Shaw
1006Jennifer AmigonCanada2026-06-01Chemel, James L Cpa NEGOTIATION87Ioni Bowcher
1007Sinclair WaycottArgentina2026-05-29Benton, John B Jr NEGOTIATION76Xuxue Feng
1008Stacey MacleadUnited Kingdom2026-06-05Commercial Press NEW3Amy Elsner
1009Sinclair WaycottCanada2026-06-06Feltz Printing Service NEW20Onyama Limba
1010Antonio CaudyCanada2026-05-18Morlong Associates UNQUALIFIED0Ioni Bowcher
1011Misaki RoysterIndia2026-06-06Feltz Printing Service RENEWAL70Amy Elsner
1012Maisha RulapaughSpain2026-05-29Printing Dimensions UNQUALIFIED43Ivan Magalhaes
1013Munro FerenczUnited Kingdom2026-05-14Chemel, James L Cpa RENEWAL35Elwin Sharvill
1014Ashley DoeUnited Kingdom2026-05-17Truhlar And Truhlar Attys QUALIFIED94Onyama Limba
1015Juan WieserAustralia2026-05-23Truhlar And Truhlar Attys PROPOSAL10Stephen Shaw
1016James ButtUnited Kingdom2026-05-27Morlong Associates PROPOSAL38Elwin Sharvill
1017Deepesh ChuiCanada2026-06-05Chapman, Ross E Esq QUALIFIED23Xuxue Feng
1018Antonio CaudyJapan2026-06-01Commercial Press QUALIFIED99Ioni Bowcher
1019Jefferson SchemmerIndia2026-05-10Truhlar And Truhlar Attys NEGOTIATION45Onyama Limba
1020Tony FollerAustralia2026-05-18Buckley Miller Wright UNQUALIFIED27Onyama Limba
1021Antonio CaudyArgentina2026-06-02Dorl, James J Esq RENEWAL72Xuxue Feng
1022James ButtSpain2026-06-06Feltz Printing Service RENEWAL27Bernardo Dominic
1023Izzy GarufiJapan2026-05-14Benton, John B Jr NEGOTIATION67Asiya Javayant
1024Nicolas IturbideBrazil2026-05-11Dorl, James J Esq QUALIFIED74Ioni Bowcher
1025Leon OldroydUnited Kingdom2026-05-27Truhlar And Truhlar Attys NEW23Bernardo Dominic
1026Aruna FigeroaFrance2026-05-24Benton, John B Jr NEGOTIATION27Anna Fali
1027Alejandro PerinCanada2026-05-21Printing Dimensions PROPOSAL81Ivan Magalhaes
1028Costa DilliardCanada2026-05-13Morlong Associates PROPOSAL64Xuxue Feng
1029Mayumi KolmetzCanada2026-05-17Chapman, Ross E Esq PROPOSAL33Amy Elsner
1030David DarakjyBrazil2026-05-26Feiner Bros NEGOTIATION60Anna Fali
1031Deepesh ChuiUnited Kingdom2026-05-19Rangoni Of Florence PROPOSAL69Elwin Sharvill
1032Rodrigues CampainBrazil2026-05-24King, Christopher A Esq PROPOSAL18Amy Elsner
1033Antonio CaudyAustralia2026-05-20Commercial Press PROPOSAL33Elwin Sharvill
1034Claire TollnerItaly2026-05-20Dorl, James J Esq QUALIFIED2Ivan Magalhaes
1035Rodrigues CampainSpain2026-05-12Rangoni Of Florence QUALIFIED46Amy Elsner
1036Emily WhobreyRussia2026-05-17Truhlar And Truhlar Attys NEW79Xuxue Feng
1037Leon OldroydAustralia2026-05-20Benton, John B Jr PROPOSAL68Stephen Shaw
1038Munro FerenczRussia2026-05-10Rangoni Of Florence UNQUALIFIED78Elwin Sharvill
1039Aika InouyeAustralia2026-05-20Rousseaux, Michael Esq UNQUALIFIED67Anna Fali
1040Silvio SlusarskiArgentina2026-05-16Printing Dimensions NEW86Ioni Bowcher
1041Ashley DoeAustralia2026-05-20Chanay, Jeffrey A Esq RENEWAL6Onyama Limba
1042Isabel BowleyGermany2026-05-19Feiner Bros QUALIFIED27Amy Elsner
1043Leon OldroydGermany2026-05-20Feiner Bros PROPOSAL6Ivan Magalhaes
1044Morrow RutaBrazil2026-05-30Morlong Associates PROPOSAL74Ivan Magalhaes
1045Munro FerenczCanada2026-05-23Benton, John B Jr RENEWAL20Bernardo Dominic
1046Darci PoquetteRussia2026-05-10Benton, John B Jr RENEWAL34Bernardo Dominic
1047Maisha RulapaughIndia2026-06-05Rangoni Of Florence QUALIFIED28Amy Elsner
1048Claire TollnerUnited Kingdom2026-05-22Dorl, James J Esq NEGOTIATION10Elwin Sharvill
1049Wickens NestleArgentina2026-05-11King, Christopher A Esq PROPOSAL5Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Arvin AlbaresAustraliaIvan Magalhaes NEW
Leja CaldareraJapanAnna Fali NEGOTIATION
Murillo MaletBrazilIoni Bowcher RENEWAL
Greenwood BologniaIndiaStephen Shaw PROPOSAL
Faith GillianFranceXuxue Feng PROPOSAL
James ButtAustraliaAsiya Javayant NEW
Chavez BriddickGermanyStephen Shaw UNQUALIFIED
Smith GlickRussiaOnyama Limba NEW
David DarakjyBrazilStephen Shaw NEGOTIATION
Faith GillianUnited KingdomBernardo Dominic NEGOTIATION
Ashley DoeItalyBernardo Dominic NEGOTIATION
Francesco ShinkoSpainAnna Fali NEW
Emily WhobreyRussiaElwin Sharvill PROPOSAL
Aditya KuskoBrazilAsiya Javayant PROPOSAL
Izzy GarufiArgentinaAsiya Javayant RENEWAL
James ButtItalyIvan Magalhaes PROPOSAL
Wickens NestleItalyAmy Elsner PROPOSAL
Jennifer AmigonUnited KingdomStephen Shaw RENEWAL
Silvio SlusarskiGermanyElwin Sharvill NEGOTIATION
Izzy GarufiCanadaIvan Magalhaes QUALIFIED
Darci PoquetteIndiaBernardo Dominic QUALIFIED
Leja CaldareraItalyElwin Sharvill NEW
Ivar PaprockiArgentinaBernardo Dominic NEW
Arvin AlbaresArgentinaStephen Shaw RENEWAL
Adams MorascaGermanyAsiya Javayant QUALIFIED
David DarakjyFranceIvan Magalhaes QUALIFIED
Jeanfrancois VenereItalyStephen Shaw UNQUALIFIED
Clifford RimItalyAsiya Javayant UNQUALIFIED
Chavez BriddickCanadaAsiya Javayant NEGOTIATION
Aika InouyeFranceBernardo Dominic RENEWAL
Alejandro PerinItalyAmy Elsner RENEWAL
Mayumi KolmetzCanadaXuxue Feng NEW
Mayumi KolmetzArgentinaAsiya Javayant NEGOTIATION
Jennifer AmigonAustraliaXuxue Feng PROPOSAL
Jones VocelkaRussiaStephen Shaw RENEWAL
Arvin AlbaresSpainIvan Magalhaes UNQUALIFIED
Johnson SergiJapanAnna Fali NEW
Nicolas IturbideBrazilOnyama Limba RENEWAL
Johnson SergiIndiaStephen Shaw QUALIFIED
Nicolas IturbideFranceOnyama Limba RENEWAL
Julie StensethSpainIoni Bowcher PROPOSAL
Leon OldroydBrazilBernardo Dominic NEGOTIATION
Isabel BowleyGermanyOnyama Limba NEW
Jennifer AmigonItalyElwin Sharvill RENEWAL
Misaki RoysterRussiaBernardo Dominic UNQUALIFIED
Morrow RutaItalyXuxue Feng PROPOSAL
James ButtAustraliaXuxue Feng RENEWAL
Julie StensethGermanyOnyama Limba QUALIFIED
Sinclair WaycottRussiaXuxue Feng PROPOSAL
Leja CaldareraRussiaOnyama Limba RENEWAL
Frozen Columns
Name
Leja Caldarera
Francesco Shinko
Jefferson Schemmer
Adams Morasca
Francesco Shinko
Jeanfrancois Venere
Darci Poquette
Emily Whobrey
Faith Gillian
Rodrigues Campain
Kaitlin Ostrosky
Izzy Garufi
Stacey Maclead
Antonio Caudy
Munro Ferencz
Tony Foller
Juan Wieser
Izzy Garufi
Smith Glick
Antonio Caudy
Mayumi Kolmetz
Chavez Briddick
Ivar Paprocki
Leon Oldroyd
Jones Vocelka
Alejandro Perin
Johnson Sergi
Salvatore Stockham
Leja Caldarera
Nicolas Iturbide
Francesco Shinko
Julie Stenseth
Izzy Garufi
Ricardo Gaucho
Smith Glick
Emily Whobrey
David Darakjy
Leon Oldroyd
Kadeem Flosi
Jefferson Schemmer
Greenwood Bolognia
Adams Morasca
James Butt
Tony Foller
Greenwood Bolognia
Darci Poquette
Cody Saylors
Maria Marrier
Stacey Maclead
Jeanfrancois Venere
IdCountryDate
1000United Kingdom2026-06-03
1001France2026-05-24
1002Argentina2026-05-10
1003Italy2026-05-31
1004Australia2026-06-06
1005Germany2026-05-09
1006United Kingdom2026-05-25
1007Germany2026-05-17
1008Russia2026-06-06
1009France2026-05-28
1010Spain2026-06-02
1011Japan2026-05-24
1012France2026-05-26
1013Japan2026-05-31
1014Australia2026-05-17
1015Germany2026-05-17
1016Brazil2026-05-21
1017Canada2026-05-09
1018Japan2026-05-21
1019Italy2026-05-23
1020Australia2026-05-14
1021Japan2026-05-17
1022Russia2026-05-23
1023Italy2026-05-11
1024India2026-05-29
1025United Kingdom2026-06-03
1026Argentina2026-05-27
1027Russia2026-06-01
1028Germany2026-05-11
1029Japan2026-05-15
1030Japan2026-05-26
1031Brazil2026-05-28
1032United Kingdom2026-05-10
1033Spain2026-05-13
1034Canada2026-06-02
1035Germany2026-05-15
1036Germany2026-05-31
1037Italy2026-05-28
1038Germany2026-05-14
1039Argentina2026-05-14
1040Australia2026-05-22
1041Australia2026-05-11
1042Argentina2026-05-24
1043Italy2026-06-07
1044India2026-06-04
1045Italy2026-05-16
1046Japan2026-05-29
1047Japan2026-06-05
1048Canada2026-05-15
1049Germany2026-05-21

On-Demand Data

NameIdCountryDate
Faith Gillian1000Japan2026-05-10
James Butt1001Canada2026-05-20
Ivar Paprocki1002Russia2026-05-18
Sinclair Waycott1003Russia2026-05-26
Leja Caldarera1004Canada2026-05-20
Leon Oldroyd1005France2026-05-13
Clifford Rim1006Italy2026-05-29
Kadeem Flosi1007Russia2026-05-17
Deepesh Chui1008Germany2026-05-22
Izzy Garufi1009Russia2026-05-21
Aditya Kusko1010India2026-05-12
Maisha Rulapaugh1011Japan2026-05-20
Juan Wieser1012France2026-05-10
Murillo Malet1013France2026-05-18
Costa Dilliard1014Brazil2026-06-02
Nicolas Iturbide1015Canada2026-05-18
Leon Oldroyd1016India2026-06-06
Greenwood Bolognia1017Argentina2026-06-03
Silvio Slusarski1018Russia2026-05-28
Cody Saylors1019Russia2026-05-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Juan WieserAustraliaIvan Magalhaes NEW
Julie StensethUnited KingdomAsiya Javayant NEW
Isabel BowleyFranceAnna Fali PROPOSAL
Julie StensethCanadaElwin Sharvill RENEWAL
Chavez BriddickArgentinaAsiya Javayant QUALIFIED
Juan WieserBrazilElwin Sharvill NEW
David DarakjyArgentinaBernardo Dominic NEW
Salvatore StockhamAustraliaStephen Shaw PROPOSAL
Aruna FigeroaIndiaAnna Fali QUALIFIED
Salvatore StockhamCanadaAnna Fali PROPOSAL
Ricardo GauchoFranceIoni Bowcher QUALIFIED
Mayumi KolmetzItalyElwin Sharvill QUALIFIED
Faith GillianAustraliaBernardo Dominic NEW
Kaitlin OstroskyItalyElwin Sharvill NEGOTIATION
Jefferson SchemmerSpainStephen Shaw RENEWAL
Leja CaldareraFranceAmy Elsner NEGOTIATION
Julie StensethItalyIoni Bowcher QUALIFIED
Silvio SlusarskiArgentinaAnna Fali RENEWAL
Jennifer AmigonFranceIvan Magalhaes PROPOSAL
Stacey MacleadRussiaOnyama Limba PROPOSAL
Claire TollnerCanadaElwin Sharvill QUALIFIED
Ashley DoeFranceIvan Magalhaes NEW
Aika InouyeFranceXuxue Feng QUALIFIED
Juan WieserIndiaAmy Elsner RENEWAL
Leja CaldareraFranceXuxue Feng QUALIFIED
Leon OldroydSpainOnyama Limba UNQUALIFIED
Morrow RutaIndiaBernardo Dominic RENEWAL
Mayumi KolmetzFranceStephen Shaw UNQUALIFIED
Ivar PaprockiItalyAmy Elsner UNQUALIFIED
Stacey MacleadItalyAsiya Javayant NEGOTIATION
Rodrigues CampainBrazilOnyama Limba QUALIFIED
Ashley DoeAustraliaIoni Bowcher PROPOSAL
Jefferson SchemmerSpainIvan Magalhaes QUALIFIED
Alejandro PerinRussiaBernardo Dominic NEGOTIATION
Maria MarrierItalyAsiya Javayant NEGOTIATION
Aruna FigeroaSpainAsiya Javayant UNQUALIFIED
Morrow RutaSpainAmy Elsner QUALIFIED
Jefferson SchemmerFranceXuxue Feng RENEWAL
Salvatore StockhamUnited KingdomStephen Shaw PROPOSAL
Antonio CaudyItalyIvan Magalhaes 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>