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
Stacey MacleadSpainOnyama Limba NEW
Mujtaba NickaBrazilOnyama Limba UNQUALIFIED
Aika InouyeAustraliaOnyama Limba UNQUALIFIED
Antonio CaudySpainAsiya Javayant NEW
Mayumi KolmetzSpainElwin Sharvill NEGOTIATION
Clifford RimJapanAnna Fali RENEWAL
Kaitlin OstroskyRussiaAsiya Javayant PROPOSAL
Isabel BowleyGermanyIvan Magalhaes QUALIFIED
Maisha RulapaughAustraliaAnna Fali UNQUALIFIED
Octavia MaletGermanyElwin Sharvill PROPOSAL
Chavez BriddickRussiaIoni Bowcher QUALIFIED
Costa DilliardAustraliaAnna Fali NEGOTIATION
Ashley DoeUnited KingdomAmy Elsner UNQUALIFIED
Morrow RutaIndiaElwin Sharvill PROPOSAL
Kadeem FlosiRussiaOnyama Limba PROPOSAL
Clifford RimRussiaBernardo Dominic NEGOTIATION
Claire TollnerUnited KingdomIvan Magalhaes RENEWAL
Cody SaylorsCanadaIvan Magalhaes PROPOSAL
Julie StensethItalyBernardo Dominic QUALIFIED
Izzy GarufiUnited KingdomIoni Bowcher NEW
Wickens NestleArgentinaElwin Sharvill NEGOTIATION
Mujtaba NickaGermanyIoni Bowcher NEW
Isabel BowleyGermanyAnna Fali QUALIFIED
Ivar PaprockiItalyAnna Fali NEW
Francesco ShinkoArgentinaAmy Elsner NEGOTIATION
Chavez BriddickUnited KingdomAnna Fali QUALIFIED
Rodrigues CampainArgentinaIoni Bowcher RENEWAL
Kaitlin OstroskyFranceStephen Shaw PROPOSAL
Rodrigues CampainJapanOnyama Limba UNQUALIFIED
Murillo MaletArgentinaElwin Sharvill RENEWAL
Mujtaba NickaSpainStephen Shaw NEW
Johnson SergiSpainIoni Bowcher NEGOTIATION
Juan WieserIndiaStephen Shaw UNQUALIFIED
Chavez BriddickFranceXuxue Feng RENEWAL
Ricardo GauchoIndiaIoni Bowcher PROPOSAL
Francesco ShinkoRussiaOnyama Limba PROPOSAL
Tony FollerRussiaBernardo Dominic PROPOSAL
Ricardo GauchoSpainAmy Elsner QUALIFIED
Francesco ShinkoIndiaAnna Fali UNQUALIFIED
Faith GillianJapanXuxue Feng PROPOSAL
Mayumi KolmetzUnited KingdomStephen Shaw PROPOSAL
Ashley DoeUnited KingdomAmy Elsner QUALIFIED
Jefferson SchemmerFranceStephen Shaw PROPOSAL
Jennifer AmigonRussiaAsiya Javayant PROPOSAL
Ricardo GauchoJapanIvan Magalhaes UNQUALIFIED
Sinclair WaycottCanadaElwin Sharvill NEW
Emily WhobreyRussiaAsiya Javayant PROPOSAL
James ButtAustraliaBernardo Dominic NEGOTIATION
Mujtaba NickaJapanAmy Elsner UNQUALIFIED
Kaitlin OstroskyGermanyAsiya Javayant NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Kaitlin OstroskyFranceStephen Shaw NEGOTIATION
Francesco ShinkoRussiaIvan Magalhaes QUALIFIED
Ricardo GauchoGermanyIoni Bowcher UNQUALIFIED
Misaki RoysterCanadaElwin Sharvill QUALIFIED
Julie StensethSpainElwin Sharvill UNQUALIFIED
Jennifer AmigonGermanyAsiya Javayant UNQUALIFIED
Mayumi KolmetzJapanStephen Shaw QUALIFIED
Jefferson SchemmerIndiaAnna Fali QUALIFIED
Francesco ShinkoAustraliaElwin Sharvill NEGOTIATION
Aika InouyeCanadaOnyama Limba PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Stacey MacleadCanada2026-05-24Rangoni Of Florence PROPOSAL56Amy Elsner
1001Wickens NestleFrance2026-06-03Truhlar And Truhlar Attys NEGOTIATION59Xuxue Feng
1002Octavia MaletSpain2026-05-17Printing Dimensions UNQUALIFIED96Ioni Bowcher
1003Aruna FigeroaJapan2026-06-09King, Christopher A Esq NEW58Elwin Sharvill
1004Tony FollerUnited Kingdom2026-06-04Feltz Printing Service PROPOSAL87Anna Fali
1005Leja CaldareraAustralia2026-06-02Benton, John B Jr NEW68Elwin Sharvill
1006Maisha RulapaughItaly2026-06-10Rangoni Of Florence RENEWAL34Bernardo Dominic
1007Kaitlin OstroskySpain2026-05-15Printing Dimensions UNQUALIFIED94Ioni Bowcher
1008Jennifer AmigonBrazil2026-05-24Feiner Bros NEGOTIATION60Xuxue Feng
1009Clifford RimRussia2026-05-25Commercial Press NEW26Onyama Limba
1010Adams MorascaCanada2026-05-21Dorl, James J Esq UNQUALIFIED88Ivan Magalhaes
1011Tony FollerIndia2026-06-07Printing Dimensions PROPOSAL73Xuxue Feng
1012Octavia MaletSpain2026-05-25Benton, John B Jr PROPOSAL14Elwin Sharvill
1013Aika InouyeGermany2026-06-10Feiner Bros RENEWAL4Xuxue Feng
1014Ricardo GauchoIndia2026-05-29Rangoni Of Florence RENEWAL98Bernardo Dominic
1015Jennifer AmigonAustralia2026-05-25Chanay, Jeffrey A Esq QUALIFIED39Onyama Limba
1016Ricardo GauchoAustralia2026-05-15Commercial Press PROPOSAL21Stephen Shaw
1017Kadeem FlosiAustralia2026-05-27Printing Dimensions QUALIFIED80Bernardo Dominic
1018Nicolas IturbideItaly2026-05-19Commercial Press PROPOSAL52Ioni Bowcher
1019Clifford RimSpain2026-05-31Rousseaux, Michael Esq NEW19Anna Fali
1020Salvatore StockhamSpain2026-06-07Buckley Miller Wright RENEWAL39Anna Fali
1021Antonio CaudyJapan2026-06-07Feltz Printing Service QUALIFIED69Bernardo Dominic
1022Tony FollerBrazil2026-05-15Rangoni Of Florence UNQUALIFIED68Asiya Javayant
1023Juan WieserGermany2026-05-30Rousseaux, Michael Esq NEGOTIATION24Onyama Limba
1024Kaitlin OstroskyUnited Kingdom2026-06-01Chanay, Jeffrey A Esq NEW56Anna Fali
1025Leja CaldareraItaly2026-06-10Chemel, James L Cpa UNQUALIFIED87Ioni Bowcher
1026Jones VocelkaFrance2026-05-20Feltz Printing Service NEGOTIATION45Ioni Bowcher
1027Emily WhobreyItaly2026-06-01Feltz Printing Service NEW93Asiya Javayant
1028Aditya KuskoSpain2026-05-14Buckley Miller Wright PROPOSAL29Xuxue Feng
1029Kadeem FlosiGermany2026-06-05Dorl, James J Esq NEGOTIATION67Asiya Javayant
1030Johnson SergiArgentina2026-06-02Chanay, Jeffrey A Esq RENEWAL51Onyama Limba
1031Jeanfrancois VenereSpain2026-05-22Feiner Bros UNQUALIFIED61Xuxue Feng
1032Costa DilliardSpain2026-06-09Chapman, Ross E Esq NEGOTIATION68Onyama Limba
1033Stacey MacleadUnited Kingdom2026-05-12Rousseaux, Michael Esq NEW30Onyama Limba
1034Adams MorascaBrazil2026-05-28Chemel, James L Cpa RENEWAL14Ivan Magalhaes
1035Jones VocelkaFrance2026-05-14King, Christopher A Esq UNQUALIFIED17Ivan Magalhaes
1036Morrow RutaFrance2026-05-18Chanay, Jeffrey A Esq NEW73Onyama Limba
1037Munro FerenczSpain2026-05-21Chanay, Jeffrey A Esq NEW29Ivan Magalhaes
1038Johnson SergiBrazil2026-05-18Dorl, James J Esq QUALIFIED13Stephen Shaw
1039Greenwood BologniaArgentina2026-05-29Commercial Press PROPOSAL65Ioni Bowcher
1040Kadeem FlosiItaly2026-06-08Rangoni Of Florence QUALIFIED2Asiya Javayant
1041Adams MorascaJapan2026-05-31King, Christopher A Esq NEW26Elwin Sharvill
1042Greenwood BologniaRussia2026-05-14Commercial Press NEW86Anna Fali
1043Tony FollerAustralia2026-05-12Rangoni Of Florence UNQUALIFIED68Anna Fali
1044Francesco ShinkoGermany2026-05-30Chemel, James L Cpa NEGOTIATION82Amy Elsner
1045Adams MorascaItaly2026-05-27Printing Dimensions NEW97Elwin Sharvill
1046Salvatore StockhamIndia2026-05-24Chemel, James L Cpa QUALIFIED94Xuxue Feng
1047Aditya KuskoFrance2026-05-14Truhlar And Truhlar Attys PROPOSAL36Xuxue Feng
1048Kaitlin OstroskyAustralia2026-06-08Rousseaux, Michael Esq NEW69Xuxue Feng
1049Leja CaldareraUnited Kingdom2026-06-03Rousseaux, Michael Esq UNQUALIFIED6Elwin Sharvill
Frozen Rows
NameCountryRepresentativeStatus
Antonio CaudyBrazilStephen Shaw RENEWAL
Tony FollerCanadaElwin Sharvill NEGOTIATION
Francesco ShinkoIndiaOnyama Limba RENEWAL
Smith GlickSpainIoni Bowcher PROPOSAL
Mayumi KolmetzIndiaXuxue Feng RENEWAL
Greenwood BologniaFranceAnna Fali NEW
Clifford RimIndiaElwin Sharvill UNQUALIFIED
Ashley DoeArgentinaIoni Bowcher QUALIFIED
Misaki RoysterIndiaStephen Shaw RENEWAL
Emily WhobreyGermanyBernardo Dominic NEGOTIATION
Salvatore StockhamBrazilAnna Fali NEGOTIATION
Morrow RutaUnited KingdomAnna Fali PROPOSAL
Johnson SergiJapanAmy Elsner PROPOSAL
James ButtIndiaBernardo Dominic NEW
Johnson SergiIndiaIvan Magalhaes RENEWAL
Faith GillianRussiaBernardo Dominic NEGOTIATION
Octavia MaletBrazilBernardo Dominic NEGOTIATION
Cody SaylorsUnited KingdomAnna Fali QUALIFIED
Costa DilliardSpainIoni Bowcher PROPOSAL
Costa DilliardCanadaElwin Sharvill NEGOTIATION
Aruna FigeroaRussiaStephen Shaw UNQUALIFIED
Murillo MaletUnited KingdomOnyama Limba NEW
Kaitlin OstroskyUnited KingdomBernardo Dominic UNQUALIFIED
Maisha RulapaughArgentinaAmy Elsner PROPOSAL
Smith GlickRussiaBernardo Dominic UNQUALIFIED
Isabel BowleySpainIvan Magalhaes PROPOSAL
Munro FerenczUnited KingdomAnna Fali QUALIFIED
Maisha RulapaughItalyStephen Shaw PROPOSAL
Cody SaylorsAustraliaBernardo Dominic PROPOSAL
Murillo MaletUnited KingdomStephen Shaw UNQUALIFIED
Morrow RutaArgentinaAnna Fali PROPOSAL
Clifford RimFranceXuxue Feng NEGOTIATION
Morrow RutaArgentinaOnyama Limba NEGOTIATION
Kaitlin OstroskyIndiaXuxue Feng NEGOTIATION
Smith GlickIndiaBernardo Dominic NEW
Alejandro PerinBrazilIvan Magalhaes NEW
Mujtaba NickaAustraliaAsiya Javayant RENEWAL
Faith GillianGermanyBernardo Dominic RENEWAL
Greenwood BologniaIndiaIoni Bowcher UNQUALIFIED
Murillo MaletItalyIvan Magalhaes NEW
Francesco ShinkoGermanyOnyama Limba NEGOTIATION
Chavez BriddickCanadaAmy Elsner NEGOTIATION
Darci PoquetteIndiaOnyama Limba QUALIFIED
Munro FerenczFranceXuxue Feng UNQUALIFIED
Darci PoquetteItalyStephen Shaw UNQUALIFIED
Leon OldroydArgentinaOnyama Limba PROPOSAL
Clifford RimJapanStephen Shaw QUALIFIED
Kadeem FlosiBrazilStephen Shaw PROPOSAL
Murillo MaletItalyXuxue Feng RENEWAL
Kadeem FlosiItalyXuxue Feng RENEWAL
Frozen Columns
Name
Mayumi Kolmetz
Morrow Ruta
Munro Ferencz
Jefferson Schemmer
Sinclair Waycott
Aruna Figeroa
Ashley Doe
Leja Caldarera
Jones Vocelka
Tony Foller
Aruna Figeroa
Aruna Figeroa
Stacey Maclead
Faith Gillian
Tony Foller
Nicolas Iturbide
Octavia Malet
Darci Poquette
Faith Gillian
Leon Oldroyd
Emily Whobrey
Smith Glick
Juan Wieser
Deepesh Chui
Mujtaba Nicka
Antonio Caudy
Jennifer Amigon
Faith Gillian
Deepesh Chui
Arvin Albares
Mujtaba Nicka
Octavia Malet
Stacey Maclead
Kadeem Flosi
Mujtaba Nicka
James Butt
Johnson Sergi
Ricardo Gaucho
Chavez Briddick
James Butt
Francesco Shinko
Mayumi Kolmetz
Arvin Albares
Leon Oldroyd
David Darakjy
Izzy Garufi
Mayumi Kolmetz
Costa Dilliard
Ashley Doe
Adams Morasca
IdCountryDate
1000Japan2026-05-22
1001Spain2026-05-25
1002Canada2026-05-18
1003Germany2026-05-24
1004Argentina2026-06-01
1005Brazil2026-05-18
1006Germany2026-06-01
1007Germany2026-06-06
1008United Kingdom2026-06-04
1009Russia2026-05-25
1010United Kingdom2026-05-25
1011Russia2026-06-09
1012Russia2026-05-17
1013India2026-06-08
1014United Kingdom2026-06-07
1015Italy2026-06-09
1016India2026-05-20
1017Russia2026-05-26
1018Canada2026-05-12
1019Spain2026-05-19
1020France2026-05-20
1021United Kingdom2026-05-12
1022Brazil2026-05-18
1023Canada2026-05-31
1024Japan2026-06-03
1025France2026-05-28
1026Russia2026-05-20
1027India2026-06-02
1028Argentina2026-05-24
1029Japan2026-05-30
1030India2026-05-21
1031Argentina2026-05-23
1032France2026-05-12
1033Australia2026-06-02
1034Argentina2026-06-03
1035Germany2026-05-14
1036Brazil2026-05-13
1037Russia2026-05-21
1038Germany2026-05-19
1039Australia2026-06-03
1040Russia2026-06-04
1041France2026-05-24
1042Canada2026-05-27
1043Germany2026-06-10
1044India2026-06-09
1045Germany2026-05-13
1046Spain2026-05-28
1047France2026-06-08
1048Brazil2026-05-27
1049Australia2026-05-23

On-Demand Data

NameIdCountryDate
Antonio Caudy1000Brazil2026-05-31
Silvio Slusarski1001Australia2026-05-24
Jones Vocelka1002Spain2026-06-10
Salvatore Stockham1003Brazil2026-05-15
Misaki Royster1004Canada2026-05-12
Leja Caldarera1005Japan2026-06-02
Isabel Bowley1006India2026-06-09
Salvatore Stockham1007Canada2026-06-05
Francesco Shinko1008Russia2026-05-23
Ricardo Gaucho1009Brazil2026-05-26
Silvio Slusarski1010India2026-05-23
Ivar Paprocki1011Japan2026-06-05
Nicolas Iturbide1012United Kingdom2026-05-15
James Butt1013Australia2026-06-04
Silvio Slusarski1014United Kingdom2026-05-28
James Butt1015Australia2026-05-17
Kaitlin Ostrosky1016Japan2026-06-02
Maisha Rulapaugh1017India2026-05-19
Clifford Rim1018Japan2026-05-14
Clifford Rim1019Argentina2026-06-01
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
James ButtArgentinaAnna Fali RENEWAL
Jennifer AmigonArgentinaAsiya Javayant PROPOSAL
Wickens NestleBrazilXuxue Feng PROPOSAL
Cody SaylorsAustraliaElwin Sharvill PROPOSAL
Alejandro PerinUnited KingdomIoni Bowcher PROPOSAL
Izzy GarufiArgentinaIvan Magalhaes QUALIFIED
Sinclair WaycottJapanAnna Fali NEGOTIATION
Ivar PaprockiArgentinaIoni Bowcher NEW
Deepesh ChuiAustraliaAnna Fali NEGOTIATION
Smith GlickAustraliaAnna Fali PROPOSAL
Costa DilliardArgentinaOnyama Limba NEGOTIATION
Aika InouyeFranceStephen Shaw RENEWAL
Arvin AlbaresArgentinaOnyama Limba QUALIFIED
Maria MarrierSpainIvan Magalhaes NEW
Nicolas IturbideRussiaIvan Magalhaes RENEWAL
Wickens NestleUnited KingdomElwin Sharvill NEGOTIATION
Clifford RimSpainIvan Magalhaes RENEWAL
Aruna FigeroaBrazilIvan Magalhaes RENEWAL
David DarakjyRussiaAsiya Javayant RENEWAL
Leon OldroydItalyOnyama Limba RENEWAL
Claire TollnerRussiaXuxue Feng RENEWAL
Maisha RulapaughRussiaOnyama Limba QUALIFIED
Emily WhobreyUnited KingdomIoni Bowcher NEW
Salvatore StockhamCanadaBernardo Dominic PROPOSAL
Salvatore StockhamJapanOnyama Limba UNQUALIFIED
Costa DilliardUnited KingdomBernardo Dominic UNQUALIFIED
Claire TollnerAustraliaElwin Sharvill PROPOSAL
Deepesh ChuiAustraliaAnna Fali NEW
Stacey MacleadBrazilIoni Bowcher NEGOTIATION
Izzy GarufiJapanAsiya Javayant PROPOSAL
Misaki RoysterIndiaIoni Bowcher UNQUALIFIED
Darci PoquetteSpainIvan Magalhaes PROPOSAL
Faith GillianUnited KingdomElwin Sharvill QUALIFIED
Maria MarrierAustraliaIoni Bowcher RENEWAL
Tony FollerIndiaBernardo Dominic PROPOSAL
Ivar PaprockiIndiaStephen Shaw RENEWAL
Aditya KuskoAustraliaAmy Elsner PROPOSAL
Antonio CaudyGermanyOnyama Limba UNQUALIFIED
Tony FollerUnited KingdomElwin Sharvill PROPOSAL
Costa DilliardItalyOnyama Limba 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>