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
Maisha RulapaughSpainStephen Shaw UNQUALIFIED
Murillo MaletBrazilAnna Fali NEW
Deepesh ChuiArgentinaAnna Fali PROPOSAL
Nicolas IturbideIndiaOnyama Limba UNQUALIFIED
Munro FerenczGermanyBernardo Dominic NEW
Aruna FigeroaBrazilXuxue Feng NEW
Aditya KuskoItalyBernardo Dominic NEGOTIATION
Arvin AlbaresIndiaBernardo Dominic QUALIFIED
Misaki RoysterAustraliaAnna Fali UNQUALIFIED
Darci PoquetteAustraliaIvan Magalhaes NEW
Antonio CaudySpainOnyama Limba PROPOSAL
Claire TollnerAustraliaStephen Shaw NEGOTIATION
Tony FollerItalyElwin Sharvill QUALIFIED
Murillo MaletArgentinaIvan Magalhaes RENEWAL
Jennifer AmigonFranceOnyama Limba PROPOSAL
Kaitlin OstroskyJapanAmy Elsner NEGOTIATION
Munro FerenczUnited KingdomAmy Elsner NEW
Nicolas IturbideUnited KingdomBernardo Dominic PROPOSAL
Claire TollnerRussiaBernardo Dominic NEW
Ashley DoeRussiaBernardo Dominic PROPOSAL
Greenwood BologniaFranceStephen Shaw PROPOSAL
Munro FerenczUnited KingdomAnna Fali QUALIFIED
Nicolas IturbideSpainXuxue Feng PROPOSAL
Juan WieserFranceIvan Magalhaes PROPOSAL
Smith GlickArgentinaOnyama Limba NEGOTIATION
Tony FollerArgentinaAnna Fali RENEWAL
Ashley DoeJapanAsiya Javayant PROPOSAL
Maisha RulapaughSpainXuxue Feng RENEWAL
Aditya KuskoRussiaBernardo Dominic PROPOSAL
Silvio SlusarskiFranceXuxue Feng NEGOTIATION
Ashley DoeJapanStephen Shaw QUALIFIED
Nicolas IturbideAustraliaIvan Magalhaes UNQUALIFIED
Johnson SergiRussiaOnyama Limba NEW
Isabel BowleyCanadaAsiya Javayant RENEWAL
Ivar PaprockiItalyAnna Fali NEW
Ricardo GauchoItalyStephen Shaw NEGOTIATION
Wickens NestleIndiaStephen Shaw RENEWAL
Arvin AlbaresBrazilIoni Bowcher QUALIFIED
Juan WieserAustraliaOnyama Limba QUALIFIED
Kadeem FlosiFranceBernardo Dominic RENEWAL
Deepesh ChuiUnited KingdomAmy Elsner PROPOSAL
Wickens NestleBrazilElwin Sharvill UNQUALIFIED
Darci PoquetteAustraliaAsiya Javayant NEW
Darci PoquetteAustraliaBernardo Dominic RENEWAL
Sinclair WaycottArgentinaBernardo Dominic RENEWAL
Stacey MacleadGermanyIvan Magalhaes UNQUALIFIED
Johnson SergiAustraliaOnyama Limba NEGOTIATION
Tony FollerItalyAmy Elsner QUALIFIED
Julie StensethFranceIoni Bowcher PROPOSAL
Claire TollnerAustraliaIoni Bowcher UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Rodrigues CampainFranceBernardo Dominic NEW
Munro FerenczGermanyAmy Elsner UNQUALIFIED
Sinclair WaycottItalyBernardo Dominic PROPOSAL
Stacey MacleadJapanXuxue Feng QUALIFIED
Morrow RutaSpainElwin Sharvill QUALIFIED
Misaki RoysterRussiaBernardo Dominic NEGOTIATION
Arvin AlbaresArgentinaIvan Magalhaes NEGOTIATION
Smith GlickArgentinaStephen Shaw UNQUALIFIED
Maisha RulapaughUnited KingdomAnna Fali UNQUALIFIED
Octavia MaletIndiaAmy Elsner UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Kadeem FlosiIndia2026-03-30Commercial Press NEGOTIATION8Elwin Sharvill
1001Murillo MaletGermany2026-04-13Commercial Press NEGOTIATION32Ioni Bowcher
1002Juan WieserBrazil2026-04-26Dorl, James J Esq QUALIFIED32Amy Elsner
1003Ivar PaprockiBrazil2026-04-17Chapman, Ross E Esq NEW25Ivan Magalhaes
1004Darci PoquetteBrazil2026-04-26Rousseaux, Michael Esq RENEWAL36Xuxue Feng
1005Ricardo GauchoGermany2026-04-09Printing Dimensions NEGOTIATION27Onyama Limba
1006Isabel BowleyFrance2026-04-25Printing Dimensions QUALIFIED9Anna Fali
1007Sinclair WaycottSpain2026-04-13Dorl, James J Esq NEW56Bernardo Dominic
1008Ricardo GauchoSpain2026-04-12Rousseaux, Michael Esq RENEWAL21Xuxue Feng
1009Silvio SlusarskiRussia2026-03-30Feltz Printing Service RENEWAL20Amy Elsner
1010Darci PoquetteUnited Kingdom2026-04-09Buckley Miller Wright NEGOTIATION34Amy Elsner
1011Izzy GarufiAustralia2026-04-27Chemel, James L Cpa RENEWAL30Elwin Sharvill
1012Adams MorascaBrazil2026-04-11Morlong Associates RENEWAL31Asiya Javayant
1013Jennifer AmigonCanada2026-04-18Feltz Printing Service UNQUALIFIED14Ivan Magalhaes
1014Alejandro PerinBrazil2026-04-18Truhlar And Truhlar Attys UNQUALIFIED1Ioni Bowcher
1015Octavia MaletGermany2026-04-24Printing Dimensions UNQUALIFIED11Elwin Sharvill
1016Alejandro PerinItaly2026-04-28Chanay, Jeffrey A Esq NEGOTIATION18Xuxue Feng
1017Jennifer AmigonArgentina2026-04-17Printing Dimensions RENEWAL38Xuxue Feng
1018Kadeem FlosiJapan2026-04-15Chemel, James L Cpa QUALIFIED82Asiya Javayant
1019Maisha RulapaughItaly2026-04-06Truhlar And Truhlar Attys UNQUALIFIED33Xuxue Feng
1020Mayumi KolmetzBrazil2026-03-31Commercial Press NEW98Amy Elsner
1021Juan WieserGermany2026-04-10Dorl, James J Esq UNQUALIFIED41Anna Fali
1022Adams MorascaArgentina2026-03-30Truhlar And Truhlar Attys UNQUALIFIED34Asiya Javayant
1023Clifford RimSpain2026-04-17Rangoni Of Florence RENEWAL63Anna Fali
1024Jones VocelkaSpain2026-04-16Feiner Bros QUALIFIED73Onyama Limba
1025Nicolas IturbideJapan2026-04-20Feltz Printing Service UNQUALIFIED15Xuxue Feng
1026Julie StensethRussia2026-03-31Chapman, Ross E Esq NEGOTIATION81Elwin Sharvill
1027Jennifer AmigonIndia2026-04-11Printing Dimensions NEGOTIATION41Xuxue Feng
1028Kadeem FlosiSpain2026-04-28Commercial Press PROPOSAL0Elwin Sharvill
1029Johnson SergiArgentina2026-04-10Chapman, Ross E Esq RENEWAL83Ivan Magalhaes
1030Adams MorascaSpain2026-04-12Morlong Associates PROPOSAL69Ivan Magalhaes
1031Murillo MaletJapan2026-04-25Chanay, Jeffrey A Esq PROPOSAL70Ivan Magalhaes
1032Ivar PaprockiJapan2026-04-05Chemel, James L Cpa NEGOTIATION5Bernardo Dominic
1033Juan WieserJapan2026-04-14Feiner Bros NEW33Amy Elsner
1034Tony FollerArgentina2026-04-27Buckley Miller Wright NEGOTIATION13Ioni Bowcher
1035Arvin AlbaresBrazil2026-04-22Benton, John B Jr RENEWAL8Asiya Javayant
1036Francesco ShinkoRussia2026-03-31Feiner Bros NEW30Anna Fali
1037Arvin AlbaresBrazil2026-04-27Feiner Bros NEGOTIATION20Onyama Limba
1038Leja CaldareraUnited Kingdom2026-04-10Feltz Printing Service NEW87Ivan Magalhaes
1039Mujtaba NickaAustralia2026-04-07Printing Dimensions PROPOSAL3Amy Elsner
1040Jennifer AmigonArgentina2026-04-02Chapman, Ross E Esq PROPOSAL6Asiya Javayant
1041Octavia MaletAustralia2026-04-17Truhlar And Truhlar Attys QUALIFIED48Bernardo Dominic
1042Jefferson SchemmerBrazil2026-04-28Printing Dimensions QUALIFIED15Amy Elsner
1043Juan WieserSpain2026-04-20Benton, John B Jr QUALIFIED72Onyama Limba
1044Darci PoquetteCanada2026-04-15Printing Dimensions NEGOTIATION91Ioni Bowcher
1045Aditya KuskoSpain2026-03-31Benton, John B Jr PROPOSAL61Bernardo Dominic
1046Nicolas IturbideCanada2026-04-12King, Christopher A Esq PROPOSAL96Ivan Magalhaes
1047Kaitlin OstroskyAustralia2026-04-08Chanay, Jeffrey A Esq NEGOTIATION65Stephen Shaw
1048Costa DilliardArgentina2026-04-19Printing Dimensions NEW87Elwin Sharvill
1049Ivar PaprockiFrance2026-04-16Chapman, Ross E Esq NEGOTIATION87Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Cody SaylorsJapanAnna Fali RENEWAL
Emily WhobreyUnited KingdomStephen Shaw NEW
Mayumi KolmetzCanadaXuxue Feng NEGOTIATION
Smith GlickCanadaStephen Shaw QUALIFIED
Wickens NestleJapanOnyama Limba UNQUALIFIED
Morrow RutaRussiaBernardo Dominic QUALIFIED
Tony FollerFranceOnyama Limba PROPOSAL
Maria MarrierCanadaAmy Elsner NEW
Rodrigues CampainJapanBernardo Dominic QUALIFIED
Leja CaldareraJapanAnna Fali QUALIFIED
Octavia MaletGermanyStephen Shaw QUALIFIED
Juan WieserAustraliaBernardo Dominic NEGOTIATION
Aditya KuskoJapanAmy Elsner NEW
Maisha RulapaughBrazilIvan Magalhaes QUALIFIED
Darci PoquetteUnited KingdomXuxue Feng RENEWAL
Cody SaylorsFranceElwin Sharvill NEW
Maisha RulapaughGermanyIoni Bowcher RENEWAL
Nicolas IturbideSpainAsiya Javayant NEW
Antonio CaudyArgentinaBernardo Dominic UNQUALIFIED
Morrow RutaBrazilBernardo Dominic QUALIFIED
Munro FerenczGermanyElwin Sharvill NEW
Stacey MacleadCanadaElwin Sharvill NEW
Stacey MacleadSpainXuxue Feng RENEWAL
Darci PoquetteArgentinaBernardo Dominic QUALIFIED
Sinclair WaycottIndiaAnna Fali PROPOSAL
Silvio SlusarskiBrazilAsiya Javayant NEGOTIATION
Ricardo GauchoFranceElwin Sharvill NEW
Rodrigues CampainAustraliaAsiya Javayant QUALIFIED
Leja CaldareraSpainBernardo Dominic RENEWAL
Octavia MaletFranceBernardo Dominic PROPOSAL
Aika InouyeIndiaAnna Fali NEGOTIATION
Aditya KuskoArgentinaAnna Fali RENEWAL
Isabel BowleyIndiaBernardo Dominic NEW
Nicolas IturbideItalyIoni Bowcher RENEWAL
Smith GlickFranceAsiya Javayant PROPOSAL
Jones VocelkaSpainStephen Shaw UNQUALIFIED
Jefferson SchemmerFranceElwin Sharvill QUALIFIED
Johnson SergiFranceElwin Sharvill UNQUALIFIED
Johnson SergiCanadaBernardo Dominic RENEWAL
Rodrigues CampainJapanIoni Bowcher NEW
Johnson SergiSpainXuxue Feng UNQUALIFIED
Francesco ShinkoBrazilAnna Fali NEGOTIATION
James ButtUnited KingdomIvan Magalhaes QUALIFIED
Mujtaba NickaSpainAnna Fali UNQUALIFIED
Julie StensethJapanXuxue Feng PROPOSAL
Octavia MaletFranceAnna Fali UNQUALIFIED
Greenwood BologniaIndiaIoni Bowcher NEGOTIATION
Kaitlin OstroskyItalyXuxue Feng QUALIFIED
James ButtRussiaElwin Sharvill RENEWAL
Rodrigues CampainItalyIvan Magalhaes NEW
Frozen Columns
Name
Munro Ferencz
Ricardo Gaucho
David Darakjy
Juan Wieser
Ricardo Gaucho
Ashley Doe
Octavia Malet
Jefferson Schemmer
Juan Wieser
Francesco Shinko
Murillo Malet
Mayumi Kolmetz
Salvatore Stockham
Smith Glick
Kadeem Flosi
Ashley Doe
Sinclair Waycott
Cody Saylors
Chavez Briddick
Sinclair Waycott
Morrow Ruta
Stacey Maclead
Kadeem Flosi
Costa Dilliard
Aika Inouye
Claire Tollner
Sinclair Waycott
Misaki Royster
Juan Wieser
Faith Gillian
Adams Morasca
David Darakjy
Aika Inouye
Jennifer Amigon
Adams Morasca
Octavia Malet
Costa Dilliard
Emily Whobrey
Mujtaba Nicka
Silvio Slusarski
Aika Inouye
Isabel Bowley
James Butt
Adams Morasca
Adams Morasca
Misaki Royster
Chavez Briddick
Rodrigues Campain
Costa Dilliard
Francesco Shinko
IdCountryDate
1000Germany2026-04-22
1001Canada2026-04-16
1002Australia2026-03-31
1003India2026-04-08
1004Japan2026-04-07
1005Spain2026-03-31
1006Canada2026-04-22
1007Italy2026-04-04
1008United Kingdom2026-04-22
1009Japan2026-04-18
1010Russia2026-04-27
1011Spain2026-04-15
1012Italy2026-04-22
1013Russia2026-04-11
1014Spain2026-04-26
1015Canada2026-04-01
1016Argentina2026-04-08
1017India2026-03-31
1018Japan2026-04-15
1019Spain2026-04-28
1020United Kingdom2026-03-30
1021Russia2026-04-16
1022Italy2026-04-02
1023Argentina2026-04-21
1024Russia2026-04-20
1025Russia2026-04-12
1026Japan2026-04-27
1027Canada2026-04-19
1028Spain2026-04-22
1029Russia2026-04-02
1030United Kingdom2026-04-17
1031France2026-04-08
1032Brazil2026-04-03
1033United Kingdom2026-04-15
1034India2026-04-02
1035Argentina2026-04-23
1036India2026-04-24
1037Italy2026-03-30
1038Argentina2026-04-07
1039Germany2026-04-23
1040France2026-04-21
1041Australia2026-04-18
1042France2026-04-20
1043Brazil2026-04-12
1044Spain2026-04-15
1045Italy2026-04-27
1046France2026-04-03
1047India2026-04-19
1048France2026-04-19
1049United Kingdom2026-04-25

On-Demand Data

NameIdCountryDate
Rodrigues Campain1000Spain2026-04-09
Maisha Rulapaugh1001United Kingdom2026-04-01
Kaitlin Ostrosky1002Brazil2026-04-20
Nicolas Iturbide1003Japan2026-04-09
Rodrigues Campain1004Spain2026-04-26
Nicolas Iturbide1005Brazil2026-04-15
Murillo Malet1006India2026-04-21
Clifford Rim1007France2026-04-12
Ricardo Gaucho1008Canada2026-04-15
Salvatore Stockham1009Brazil2026-04-17
Clifford Rim1010India2026-04-10
Salvatore Stockham1011Canada2026-04-11
Jefferson Schemmer1012Brazil2026-04-08
Maria Marrier1013India2026-04-07
Jefferson Schemmer1014Russia2026-04-01
Kaitlin Ostrosky1015Australia2026-04-20
Leon Oldroyd1016India2026-04-27
Murillo Malet1017France2026-04-25
Emily Whobrey1018United Kingdom2026-04-27
Chavez Briddick1019India2026-04-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Silvio SlusarskiItalyAsiya Javayant UNQUALIFIED
Adams MorascaUnited KingdomElwin Sharvill NEW
Izzy GarufiGermanyOnyama Limba NEW
Izzy GarufiSpainXuxue Feng PROPOSAL
Cody SaylorsAustraliaAnna Fali QUALIFIED
Julie StensethArgentinaAsiya Javayant RENEWAL
Morrow RutaUnited KingdomOnyama Limba QUALIFIED
Jeanfrancois VenereArgentinaOnyama Limba UNQUALIFIED
Sinclair WaycottArgentinaAsiya Javayant NEGOTIATION
Izzy GarufiUnited KingdomElwin Sharvill PROPOSAL
Leon OldroydRussiaIvan Magalhaes RENEWAL
Maisha RulapaughArgentinaBernardo Dominic NEW
Misaki RoysterBrazilStephen Shaw RENEWAL
Jefferson SchemmerItalyAmy Elsner NEW
Mujtaba NickaFranceIoni Bowcher UNQUALIFIED
Aditya KuskoCanadaAsiya Javayant NEGOTIATION
Kaitlin OstroskyJapanBernardo Dominic RENEWAL
Cody SaylorsRussiaIvan Magalhaes NEW
Sinclair WaycottFranceAsiya Javayant NEW
Johnson SergiGermanyElwin Sharvill PROPOSAL
Cody SaylorsBrazilAsiya Javayant PROPOSAL
Tony FollerIndiaAmy Elsner PROPOSAL
Chavez BriddickRussiaAsiya Javayant UNQUALIFIED
Jeanfrancois VenereGermanyOnyama Limba NEGOTIATION
Leon OldroydJapanIvan Magalhaes NEW
Jones VocelkaArgentinaAsiya Javayant RENEWAL
David DarakjyGermanyIoni Bowcher QUALIFIED
Sinclair WaycottIndiaOnyama Limba RENEWAL
Adams MorascaUnited KingdomAsiya Javayant QUALIFIED
Greenwood BologniaRussiaOnyama Limba RENEWAL
Isabel BowleyGermanyAmy Elsner QUALIFIED
Juan WieserCanadaIvan Magalhaes QUALIFIED
Jefferson SchemmerGermanyIvan Magalhaes NEW
Chavez BriddickBrazilStephen Shaw NEGOTIATION
Tony FollerRussiaIvan Magalhaes UNQUALIFIED
Sinclair WaycottGermanyAnna Fali UNQUALIFIED
Maria MarrierGermanyAmy Elsner RENEWAL
Octavia MaletUnited KingdomIvan Magalhaes NEW
Izzy GarufiGermanyAsiya Javayant UNQUALIFIED
Mujtaba NickaArgentinaIvan Magalhaes UNQUALIFIED

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