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
Smith GlickAustraliaAmy Elsner UNQUALIFIED
Emily WhobreyUnited KingdomAnna Fali NEW
Octavia MaletIndiaAsiya Javayant UNQUALIFIED
David DarakjyRussiaIvan Magalhaes QUALIFIED
Deepesh ChuiArgentinaXuxue Feng NEGOTIATION
Arvin AlbaresItalyOnyama Limba RENEWAL
Ashley DoeBrazilElwin Sharvill PROPOSAL
Claire TollnerAustraliaAnna Fali QUALIFIED
Murillo MaletRussiaStephen Shaw UNQUALIFIED
Clifford RimAustraliaIvan Magalhaes QUALIFIED
Cody SaylorsGermanyIoni Bowcher NEW
Claire TollnerBrazilXuxue Feng NEW
Salvatore StockhamCanadaAnna Fali RENEWAL
Johnson SergiJapanAsiya Javayant NEW
Arvin AlbaresCanadaOnyama Limba NEGOTIATION
Claire TollnerArgentinaElwin Sharvill QUALIFIED
Cody SaylorsAustraliaElwin Sharvill NEW
Francesco ShinkoUnited KingdomOnyama Limba NEGOTIATION
Greenwood BologniaSpainIoni Bowcher UNQUALIFIED
Clifford RimFranceOnyama Limba NEW
Emily WhobreyArgentinaAnna Fali NEGOTIATION
Leja CaldareraGermanyStephen Shaw PROPOSAL
Claire TollnerUnited KingdomStephen Shaw NEGOTIATION
Aika InouyeCanadaIoni Bowcher NEW
Alejandro PerinJapanBernardo Dominic UNQUALIFIED
Arvin AlbaresAustraliaAsiya Javayant NEGOTIATION
Leon OldroydArgentinaAmy Elsner NEW
Murillo MaletUnited KingdomXuxue Feng PROPOSAL
Isabel BowleyGermanyElwin Sharvill UNQUALIFIED
Julie StensethCanadaBernardo Dominic PROPOSAL
Greenwood BologniaIndiaStephen Shaw UNQUALIFIED
Costa DilliardArgentinaOnyama Limba NEW
Greenwood BologniaArgentinaAmy Elsner UNQUALIFIED
Kadeem FlosiIndiaStephen Shaw NEGOTIATION
Cody SaylorsAustraliaAmy Elsner RENEWAL
Deepesh ChuiJapanXuxue Feng NEW
Ivar PaprockiArgentinaElwin Sharvill PROPOSAL
Sinclair WaycottCanadaAsiya Javayant UNQUALIFIED
Kaitlin OstroskyItalyAsiya Javayant RENEWAL
Adams MorascaFranceXuxue Feng PROPOSAL
Silvio SlusarskiItalyIoni Bowcher RENEWAL
James ButtRussiaAsiya Javayant NEGOTIATION
Julie StensethItalyIoni Bowcher NEGOTIATION
Ashley DoeGermanyElwin Sharvill PROPOSAL
Sinclair WaycottSpainAmy Elsner RENEWAL
Smith GlickGermanyAsiya Javayant NEGOTIATION
Deepesh ChuiFranceXuxue Feng NEGOTIATION
Morrow RutaJapanStephen Shaw UNQUALIFIED
Misaki RoysterAustraliaAsiya Javayant NEGOTIATION
Clifford RimFranceIvan Magalhaes RENEWAL
Horizontal
NameCountryRepresentativeStatus
James ButtItalyAmy Elsner RENEWAL
Aika InouyeItalyAsiya Javayant QUALIFIED
Adams MorascaJapanAsiya Javayant QUALIFIED
Arvin AlbaresGermanyAnna Fali RENEWAL
Cody SaylorsArgentinaAsiya Javayant PROPOSAL
Jeanfrancois VenereArgentinaIvan Magalhaes NEW
Maria MarrierBrazilAnna Fali NEGOTIATION
Julie StensethBrazilOnyama Limba RENEWAL
Leon OldroydGermanyAmy Elsner NEGOTIATION
Chavez BriddickIndiaStephen Shaw PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Mujtaba NickaArgentina2026-05-25Chemel, James L Cpa NEGOTIATION10Stephen Shaw
1001Kadeem FlosiSpain2026-05-10Chapman, Ross E Esq UNQUALIFIED37Bernardo Dominic
1002Emily WhobreyJapan2026-05-05Feiner Bros RENEWAL43Stephen Shaw
1003Wickens NestleGermany2026-05-23Benton, John B Jr NEW26Ivan Magalhaes
1004Johnson SergiGermany2026-04-30King, Christopher A Esq NEGOTIATION32Onyama Limba
1005Silvio SlusarskiItaly2026-05-02Dorl, James J Esq RENEWAL78Ioni Bowcher
1006Tony FollerUnited Kingdom2026-05-01Feltz Printing Service QUALIFIED36Asiya Javayant
1007David DarakjyUnited Kingdom2026-05-05Truhlar And Truhlar Attys PROPOSAL26Bernardo Dominic
1008Nicolas IturbideRussia2026-05-08Rousseaux, Michael Esq NEGOTIATION37Onyama Limba
1009Faith GillianGermany2026-05-09Feiner Bros PROPOSAL93Elwin Sharvill
1010Izzy GarufiJapan2026-04-29Rangoni Of Florence NEGOTIATION83Stephen Shaw
1011Julie StensethItaly2026-05-13Rousseaux, Michael Esq RENEWAL63Xuxue Feng
1012Wickens NestleItaly2026-05-04Chanay, Jeffrey A Esq QUALIFIED11Xuxue Feng
1013Antonio CaudySpain2026-05-09Rousseaux, Michael Esq NEGOTIATION47Xuxue Feng
1014Jefferson SchemmerFrance2026-05-18Morlong Associates NEW36Asiya Javayant
1015Deepesh ChuiSpain2026-05-01King, Christopher A Esq QUALIFIED93Xuxue Feng
1016Julie StensethIndia2026-05-16Dorl, James J Esq UNQUALIFIED6Anna Fali
1017Salvatore StockhamJapan2026-04-29Rousseaux, Michael Esq UNQUALIFIED94Bernardo Dominic
1018Munro FerenczItaly2026-05-21Morlong Associates NEW55Xuxue Feng
1019Leja CaldareraJapan2026-05-23Feiner Bros NEW21Amy Elsner
1020David DarakjyGermany2026-05-11Chemel, James L Cpa UNQUALIFIED85Elwin Sharvill
1021Morrow RutaIndia2026-05-23Morlong Associates PROPOSAL75Asiya Javayant
1022Nicolas IturbideUnited Kingdom2026-05-21Dorl, James J Esq QUALIFIED34Amy Elsner
1023Julie StensethAustralia2026-05-12Chapman, Ross E Esq QUALIFIED50Amy Elsner
1024Greenwood BologniaBrazil2026-05-27Commercial Press PROPOSAL48Anna Fali
1025Jefferson SchemmerRussia2026-05-23Chapman, Ross E Esq RENEWAL39Ivan Magalhaes
1026Aika InouyeAustralia2026-05-15Printing Dimensions NEW6Bernardo Dominic
1027Maisha RulapaughCanada2026-05-06Morlong Associates QUALIFIED25Ivan Magalhaes
1028Costa DilliardArgentina2026-05-04Commercial Press QUALIFIED97Anna Fali
1029Nicolas IturbideSpain2026-05-19Dorl, James J Esq RENEWAL72Asiya Javayant
1030Mayumi KolmetzIndia2026-05-27Chapman, Ross E Esq QUALIFIED88Elwin Sharvill
1031Alejandro PerinArgentina2026-05-25Buckley Miller Wright QUALIFIED99Onyama Limba
1032Stacey MacleadSpain2026-05-27King, Christopher A Esq NEW18Asiya Javayant
1033Arvin AlbaresArgentina2026-05-17Rangoni Of Florence NEW67Bernardo Dominic
1034Cody SaylorsItaly2026-04-29Rousseaux, Michael Esq PROPOSAL19Ivan Magalhaes
1035Mayumi KolmetzAustralia2026-05-14Feiner Bros PROPOSAL33Bernardo Dominic
1036Greenwood BologniaUnited Kingdom2026-05-01Dorl, James J Esq NEW9Bernardo Dominic
1037Clifford RimSpain2026-05-01Truhlar And Truhlar Attys NEGOTIATION90Ivan Magalhaes
1038Aruna FigeroaIndia2026-05-22Benton, John B Jr PROPOSAL23Amy Elsner
1039Misaki RoysterBrazil2026-05-03King, Christopher A Esq UNQUALIFIED88Asiya Javayant
1040Leja CaldareraBrazil2026-05-22Dorl, James J Esq QUALIFIED49Bernardo Dominic
1041Ivar PaprockiFrance2026-05-09Truhlar And Truhlar Attys NEGOTIATION97Amy Elsner
1042Salvatore StockhamAustralia2026-05-05King, Christopher A Esq QUALIFIED32Ioni Bowcher
1043Costa DilliardCanada2026-04-29Printing Dimensions RENEWAL3Xuxue Feng
1044Chavez BriddickBrazil2026-05-18Printing Dimensions NEW95Amy Elsner
1045Greenwood BologniaSpain2026-04-29King, Christopher A Esq QUALIFIED43Onyama Limba
1046Juan WieserJapan2026-05-13Chemel, James L Cpa RENEWAL60Ioni Bowcher
1047Maria MarrierUnited Kingdom2026-05-12Morlong Associates QUALIFIED46Anna Fali
1048Claire TollnerAustralia2026-05-11Chapman, Ross E Esq NEGOTIATION72Bernardo Dominic
1049Darci PoquetteUnited Kingdom2026-05-20Printing Dimensions QUALIFIED86Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Johnson SergiItalyIoni Bowcher UNQUALIFIED
Costa DilliardBrazilOnyama Limba PROPOSAL
Aika InouyeUnited KingdomAsiya Javayant NEW
Rodrigues CampainAustraliaBernardo Dominic QUALIFIED
Maisha RulapaughRussiaAnna Fali NEGOTIATION
Munro FerenczFranceIoni Bowcher QUALIFIED
Ashley DoeIndiaIvan Magalhaes PROPOSAL
Ricardo GauchoFranceIoni Bowcher RENEWAL
Misaki RoysterArgentinaStephen Shaw PROPOSAL
Nicolas IturbideAustraliaXuxue Feng QUALIFIED
Jones VocelkaItalyIvan Magalhaes NEGOTIATION
Maria MarrierItalyIoni Bowcher NEW
Adams MorascaRussiaElwin Sharvill PROPOSAL
Antonio CaudySpainElwin Sharvill PROPOSAL
Smith GlickBrazilAsiya Javayant UNQUALIFIED
Deepesh ChuiArgentinaAnna Fali RENEWAL
Smith GlickJapanIvan Magalhaes NEW
Smith GlickUnited KingdomAnna Fali UNQUALIFIED
James ButtRussiaOnyama Limba NEW
Arvin AlbaresJapanIvan Magalhaes UNQUALIFIED
Jennifer AmigonUnited KingdomIvan Magalhaes PROPOSAL
Salvatore StockhamBrazilXuxue Feng QUALIFIED
Leon OldroydArgentinaIvan Magalhaes PROPOSAL
Morrow RutaAustraliaAnna Fali NEGOTIATION
Mayumi KolmetzArgentinaBernardo Dominic PROPOSAL
Maisha RulapaughJapanStephen Shaw PROPOSAL
Nicolas IturbideItalyAsiya Javayant QUALIFIED
Rodrigues CampainItalyAmy Elsner RENEWAL
Clifford RimIndiaElwin Sharvill UNQUALIFIED
Leja CaldareraUnited KingdomAmy Elsner NEW
Jennifer AmigonSpainElwin Sharvill NEW
Emily WhobreyIndiaIoni Bowcher PROPOSAL
Ricardo GauchoSpainBernardo Dominic NEGOTIATION
Juan WieserAustraliaAmy Elsner QUALIFIED
Morrow RutaItalyXuxue Feng UNQUALIFIED
Jeanfrancois VenereArgentinaBernardo Dominic RENEWAL
Aditya KuskoUnited KingdomIvan Magalhaes NEW
Clifford RimIndiaAsiya Javayant NEGOTIATION
Silvio SlusarskiGermanyStephen Shaw NEW
Emily WhobreyCanadaAnna Fali NEW
Ivar PaprockiFranceIoni Bowcher UNQUALIFIED
Leja CaldareraIndiaAsiya Javayant NEW
Isabel BowleyJapanIvan Magalhaes NEGOTIATION
Morrow RutaSpainIvan Magalhaes NEW
Ricardo GauchoAustraliaElwin Sharvill PROPOSAL
Kadeem FlosiItalyAmy Elsner PROPOSAL
James ButtGermanyOnyama Limba PROPOSAL
Aditya KuskoIndiaIoni Bowcher QUALIFIED
Salvatore StockhamSpainElwin Sharvill PROPOSAL
Ricardo GauchoItalyBernardo Dominic QUALIFIED
Frozen Columns
Name
Greenwood Bolognia
Ashley Doe
Tony Foller
Costa Dilliard
Tony Foller
David Darakjy
Alejandro Perin
Emily Whobrey
Smith Glick
Aruna Figeroa
Wickens Nestle
Juan Wieser
Jefferson Schemmer
Antonio Caudy
Jennifer Amigon
Jefferson Schemmer
Isabel Bowley
Morrow Ruta
Greenwood Bolognia
Octavia Malet
Rodrigues Campain
Costa Dilliard
Kadeem Flosi
Salvatore Stockham
Leja Caldarera
Wickens Nestle
Costa Dilliard
Clifford Rim
Darci Poquette
Kaitlin Ostrosky
Aruna Figeroa
David Darakjy
Julie Stenseth
Murillo Malet
Wickens Nestle
Aditya Kusko
Ricardo Gaucho
Maria Marrier
Jefferson Schemmer
Julie Stenseth
Emily Whobrey
Octavia Malet
Jefferson Schemmer
Costa Dilliard
Rodrigues Campain
Emily Whobrey
Adams Morasca
Maria Marrier
Nicolas Iturbide
Julie Stenseth
IdCountryDate
1000Germany2026-05-18
1001India2026-05-12
1002Canada2026-05-15
1003Germany2026-05-11
1004Brazil2026-05-03
1005India2026-05-15
1006Canada2026-05-23
1007Brazil2026-05-08
1008Russia2026-05-15
1009India2026-05-09
1010Russia2026-04-29
1011Germany2026-05-24
1012Brazil2026-05-03
1013Australia2026-05-13
1014Argentina2026-05-13
1015France2026-05-20
1016France2026-05-13
1017Italy2026-05-18
1018India2026-05-21
1019Argentina2026-05-17
1020United Kingdom2026-04-29
1021India2026-05-04
1022France2026-05-06
1023Canada2026-05-18
1024Japan2026-05-19
1025Italy2026-05-20
1026India2026-05-06
1027Germany2026-05-05
1028United Kingdom2026-05-15
1029Japan2026-05-06
1030Russia2026-05-22
1031Russia2026-05-22
1032Spain2026-05-06
1033Spain2026-05-02
1034United Kingdom2026-05-14
1035United Kingdom2026-05-18
1036Germany2026-05-01
1037Argentina2026-05-25
1038Italy2026-05-16
1039Argentina2026-05-02
1040India2026-05-08
1041Germany2026-05-13
1042Brazil2026-04-29
1043Japan2026-05-11
1044Canada2026-05-11
1045Brazil2026-05-03
1046Canada2026-05-26
1047India2026-05-19
1048Canada2026-05-15
1049Spain2026-05-02

On-Demand Data

NameIdCountryDate
Clifford Rim1000Japan2026-05-11
Leja Caldarera1001Brazil2026-05-12
Leon Oldroyd1002Brazil2026-04-30
Octavia Malet1003Spain2026-05-04
Arvin Albares1004Brazil2026-04-29
Jefferson Schemmer1005Japan2026-04-29
Isabel Bowley1006Spain2026-05-27
Greenwood Bolognia1007Spain2026-05-08
Emily Whobrey1008Spain2026-05-09
Jeanfrancois Venere1009Germany2026-05-02
Misaki Royster1010United Kingdom2026-05-01
Ricardo Gaucho1011Brazil2026-05-11
Aditya Kusko1012Canada2026-05-03
James Butt1013Italy2026-05-11
Jeanfrancois Venere1014Spain2026-05-05
Johnson Sergi1015Italy2026-05-20
Ashley Doe1016Russia2026-05-28
Greenwood Bolognia1017Argentina2026-05-10
Johnson Sergi1018Japan2026-05-18
Kadeem Flosi1019Germany2026-05-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Izzy GarufiFranceXuxue Feng PROPOSAL
Kaitlin OstroskyJapanIvan Magalhaes PROPOSAL
Darci PoquetteItalyOnyama Limba PROPOSAL
Faith GillianFranceXuxue Feng PROPOSAL
Clifford RimIndiaElwin Sharvill UNQUALIFIED
Adams MorascaAustraliaIoni Bowcher NEGOTIATION
Silvio SlusarskiSpainElwin Sharvill NEW
Stacey MacleadGermanyIvan Magalhaes RENEWAL
Costa DilliardArgentinaStephen Shaw NEW
Jennifer AmigonJapanAsiya Javayant UNQUALIFIED
Aditya KuskoRussiaOnyama Limba RENEWAL
James ButtUnited KingdomElwin Sharvill PROPOSAL
Greenwood BologniaAustraliaIvan Magalhaes RENEWAL
Juan WieserIndiaIvan Magalhaes NEW
Kaitlin OstroskyJapanStephen Shaw UNQUALIFIED
Emily WhobreySpainElwin Sharvill NEGOTIATION
Isabel BowleyFranceBernardo Dominic QUALIFIED
Aika InouyeArgentinaIoni Bowcher NEGOTIATION
Julie StensethBrazilElwin Sharvill NEGOTIATION
Claire TollnerUnited KingdomStephen Shaw PROPOSAL
Wickens NestleIndiaIoni Bowcher PROPOSAL
Jeanfrancois VenereSpainXuxue Feng UNQUALIFIED
Jefferson SchemmerIndiaAmy Elsner NEGOTIATION
Kadeem FlosiItalyAmy Elsner QUALIFIED
Leon OldroydUnited KingdomAnna Fali UNQUALIFIED
Wickens NestleArgentinaAsiya Javayant RENEWAL
Faith GillianJapanBernardo Dominic QUALIFIED
Smith GlickAustraliaElwin Sharvill RENEWAL
Leon OldroydFranceIoni Bowcher UNQUALIFIED
Chavez BriddickIndiaStephen Shaw QUALIFIED
Nicolas IturbideCanadaStephen Shaw RENEWAL
Leja CaldareraItalyAmy Elsner NEGOTIATION
Clifford RimFranceStephen Shaw QUALIFIED
Rodrigues CampainItalyOnyama Limba NEW
Juan WieserSpainAsiya Javayant QUALIFIED
Johnson SergiAustraliaAsiya Javayant UNQUALIFIED
Murillo MaletAustraliaIoni Bowcher PROPOSAL
Aika InouyeArgentinaAnna Fali NEGOTIATION
Izzy GarufiSpainAmy Elsner RENEWAL
Costa DilliardRussiaIoni Bowcher 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>