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
Tony FollerAustraliaAsiya Javayant RENEWAL
Darci PoquetteCanadaIoni Bowcher UNQUALIFIED
Clifford RimSpainXuxue Feng RENEWAL
Izzy GarufiUnited KingdomAmy Elsner PROPOSAL
Ivar PaprockiSpainAsiya Javayant QUALIFIED
Izzy GarufiCanadaElwin Sharvill RENEWAL
Alejandro PerinCanadaStephen Shaw RENEWAL
Ricardo GauchoCanadaElwin Sharvill QUALIFIED
Claire TollnerJapanStephen Shaw RENEWAL
Mayumi KolmetzUnited KingdomIoni Bowcher PROPOSAL
Emily WhobreyArgentinaAmy Elsner RENEWAL
Sinclair WaycottIndiaAsiya Javayant UNQUALIFIED
Antonio CaudyIndiaIvan Magalhaes RENEWAL
Sinclair WaycottItalyAnna Fali QUALIFIED
Jeanfrancois VenereFranceAmy Elsner UNQUALIFIED
Smith GlickIndiaAsiya Javayant UNQUALIFIED
Tony FollerUnited KingdomElwin Sharvill QUALIFIED
Aruna FigeroaBrazilAsiya Javayant NEGOTIATION
Ashley DoeSpainIvan Magalhaes NEGOTIATION
Jones VocelkaUnited KingdomAnna Fali RENEWAL
Costa DilliardBrazilOnyama Limba PROPOSAL
Tony FollerSpainIoni Bowcher NEW
Murillo MaletFranceAmy Elsner NEGOTIATION
Aditya KuskoCanadaOnyama Limba PROPOSAL
Maisha RulapaughRussiaAmy Elsner UNQUALIFIED
Faith GillianFranceAsiya Javayant RENEWAL
Wickens NestleIndiaOnyama Limba PROPOSAL
Costa DilliardCanadaOnyama Limba NEW
Izzy GarufiGermanyAmy Elsner NEW
Kadeem FlosiFranceIoni Bowcher QUALIFIED
Julie StensethGermanyOnyama Limba NEW
Leja CaldareraFranceIoni Bowcher NEW
Maria MarrierSpainBernardo Dominic PROPOSAL
Ashley DoeJapanXuxue Feng RENEWAL
Morrow RutaCanadaAsiya Javayant RENEWAL
Julie StensethFranceIvan Magalhaes RENEWAL
Maria MarrierGermanyAsiya Javayant QUALIFIED
Jones VocelkaRussiaOnyama Limba RENEWAL
Smith GlickBrazilAsiya Javayant NEGOTIATION
Aruna FigeroaItalyElwin Sharvill QUALIFIED
Kadeem FlosiSpainIvan Magalhaes RENEWAL
Julie StensethIndiaAsiya Javayant UNQUALIFIED
Johnson SergiRussiaAmy Elsner UNQUALIFIED
Mujtaba NickaUnited KingdomBernardo Dominic UNQUALIFIED
Costa DilliardJapanStephen Shaw NEW
Murillo MaletFranceIoni Bowcher PROPOSAL
Adams MorascaItalyIoni Bowcher UNQUALIFIED
Darci PoquetteSpainIoni Bowcher NEW
Darci PoquetteIndiaAnna Fali UNQUALIFIED
Jones VocelkaGermanyOnyama Limba PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Tony FollerUnited KingdomOnyama Limba UNQUALIFIED
Alejandro PerinItalyAsiya Javayant QUALIFIED
Alejandro PerinItalyXuxue Feng QUALIFIED
Johnson SergiItalyIvan Magalhaes RENEWAL
Murillo MaletSpainAmy Elsner QUALIFIED
Silvio SlusarskiIndiaAsiya Javayant NEGOTIATION
Johnson SergiBrazilOnyama Limba RENEWAL
Jeanfrancois VenereArgentinaAmy Elsner NEGOTIATION
Claire TollnerUnited KingdomIoni Bowcher PROPOSAL
Greenwood BologniaGermanyIoni Bowcher QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Kadeem FlosiSpain2026-06-19Chanay, Jeffrey A Esq PROPOSAL96Xuxue Feng
1001Izzy GarufiJapan2026-06-16Morlong Associates UNQUALIFIED44Xuxue Feng
1002Maisha RulapaughBrazil2026-06-01Morlong Associates NEGOTIATION58Ioni Bowcher
1003Antonio CaudyRussia2026-06-10Benton, John B Jr QUALIFIED52Anna Fali
1004Mayumi KolmetzArgentina2026-06-13Rousseaux, Michael Esq UNQUALIFIED66Xuxue Feng
1005Wickens NestleRussia2026-05-28Benton, John B Jr PROPOSAL59Stephen Shaw
1006Francesco ShinkoCanada2026-06-19Chemel, James L Cpa QUALIFIED30Bernardo Dominic
1007Faith GillianItaly2026-06-06Feltz Printing Service UNQUALIFIED59Anna Fali
1008Aruna FigeroaSpain2026-06-04King, Christopher A Esq UNQUALIFIED70Asiya Javayant
1009Greenwood BologniaAustralia2026-06-15Rousseaux, Michael Esq RENEWAL35Onyama Limba
1010Aruna FigeroaRussia2026-05-31King, Christopher A Esq QUALIFIED66Bernardo Dominic
1011Leja CaldareraAustralia2026-06-17King, Christopher A Esq QUALIFIED75Asiya Javayant
1012Tony FollerBrazil2026-06-16King, Christopher A Esq UNQUALIFIED83Stephen Shaw
1013Octavia MaletJapan2026-06-02Chapman, Ross E Esq UNQUALIFIED6Stephen Shaw
1014Cody SaylorsRussia2026-05-25Chanay, Jeffrey A Esq NEW40Asiya Javayant
1015Leja CaldareraBrazil2026-06-02Benton, John B Jr PROPOSAL9Anna Fali
1016Maisha RulapaughArgentina2026-06-02Chemel, James L Cpa RENEWAL54Onyama Limba
1017Johnson SergiIndia2026-06-10Truhlar And Truhlar Attys NEW94Amy Elsner
1018Sinclair WaycottCanada2026-06-05Chapman, Ross E Esq PROPOSAL20Ivan Magalhaes
1019Octavia MaletUnited Kingdom2026-06-03Buckley Miller Wright PROPOSAL39Asiya Javayant
1020Mayumi KolmetzItaly2026-06-19Chemel, James L Cpa NEGOTIATION46Elwin Sharvill
1021Emily WhobreyCanada2026-06-11Truhlar And Truhlar Attys RENEWAL17Xuxue Feng
1022Leon OldroydAustralia2026-05-29Truhlar And Truhlar Attys NEGOTIATION51Stephen Shaw
1023Wickens NestleFrance2026-06-13Chanay, Jeffrey A Esq NEGOTIATION55Bernardo Dominic
1024Julie StensethAustralia2026-06-06Feltz Printing Service NEW92Bernardo Dominic
1025Chavez BriddickBrazil2026-06-02Feltz Printing Service NEGOTIATION66Elwin Sharvill
1026Sinclair WaycottBrazil2026-05-30Printing Dimensions RENEWAL82Asiya Javayant
1027Arvin AlbaresRussia2026-06-02Buckley Miller Wright QUALIFIED31Ivan Magalhaes
1028Jefferson SchemmerSpain2026-06-01Commercial Press RENEWAL67Ioni Bowcher
1029Izzy GarufiAustralia2026-06-17Benton, John B Jr RENEWAL88Anna Fali
1030Maria MarrierCanada2026-06-17King, Christopher A Esq NEW98Elwin Sharvill
1031Clifford RimIndia2026-06-18Rangoni Of Florence QUALIFIED73Ioni Bowcher
1032Sinclair WaycottFrance2026-05-31Chanay, Jeffrey A Esq RENEWAL42Asiya Javayant
1033Darci PoquetteIndia2026-06-02Morlong Associates NEW26Asiya Javayant
1034Stacey MacleadItaly2026-06-05Rousseaux, Michael Esq QUALIFIED82Asiya Javayant
1035Aruna FigeroaItaly2026-06-09Buckley Miller Wright RENEWAL67Xuxue Feng
1036Emily WhobreySpain2026-05-24Dorl, James J Esq NEGOTIATION48Amy Elsner
1037Nicolas IturbideItaly2026-06-09Dorl, James J Esq QUALIFIED33Ivan Magalhaes
1038Jefferson SchemmerAustralia2026-05-26Printing Dimensions NEW26Bernardo Dominic
1039Aruna FigeroaArgentina2026-05-26Printing Dimensions QUALIFIED13Ioni Bowcher
1040Aditya KuskoFrance2026-05-27Truhlar And Truhlar Attys UNQUALIFIED75Elwin Sharvill
1041Kadeem FlosiGermany2026-06-01Chemel, James L Cpa QUALIFIED57Stephen Shaw
1042David DarakjyIndia2026-06-18Feltz Printing Service UNQUALIFIED88Asiya Javayant
1043Aditya KuskoFrance2026-05-24Chemel, James L Cpa NEGOTIATION42Onyama Limba
1044Chavez BriddickUnited Kingdom2026-05-26Buckley Miller Wright NEW65Anna Fali
1045Ricardo GauchoAustralia2026-05-22Commercial Press NEW66Bernardo Dominic
1046Jennifer AmigonRussia2026-06-09Dorl, James J Esq NEGOTIATION98Asiya Javayant
1047Ivar PaprockiFrance2026-05-31Feiner Bros QUALIFIED31Stephen Shaw
1048Johnson SergiUnited Kingdom2026-05-24Benton, John B Jr QUALIFIED95Bernardo Dominic
1049Adams MorascaArgentina2026-06-02Feiner Bros QUALIFIED68Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Deepesh ChuiUnited KingdomXuxue Feng NEGOTIATION
Isabel BowleyUnited KingdomOnyama Limba QUALIFIED
Aruna FigeroaGermanyStephen Shaw QUALIFIED
Arvin AlbaresUnited KingdomBernardo Dominic UNQUALIFIED
Misaki RoysterBrazilIvan Magalhaes RENEWAL
Kaitlin OstroskyRussiaXuxue Feng PROPOSAL
Murillo MaletGermanyAsiya Javayant RENEWAL
Rodrigues CampainRussiaAmy Elsner UNQUALIFIED
Jefferson SchemmerBrazilBernardo Dominic QUALIFIED
Stacey MacleadBrazilXuxue Feng PROPOSAL
Jennifer AmigonIndiaAsiya Javayant RENEWAL
Johnson SergiItalyStephen Shaw NEW
Chavez BriddickJapanStephen Shaw NEGOTIATION
Kaitlin OstroskyItalyBernardo Dominic UNQUALIFIED
Rodrigues CampainRussiaOnyama Limba PROPOSAL
Francesco ShinkoIndiaOnyama Limba PROPOSAL
David DarakjyJapanOnyama Limba NEGOTIATION
Wickens NestleJapanElwin Sharvill QUALIFIED
Aditya KuskoArgentinaAnna Fali NEW
Antonio CaudyUnited KingdomStephen Shaw UNQUALIFIED
Kaitlin OstroskyFranceAmy Elsner NEGOTIATION
Cody SaylorsRussiaElwin Sharvill RENEWAL
Jefferson SchemmerAustraliaAsiya Javayant RENEWAL
Faith GillianCanadaOnyama Limba NEGOTIATION
Darci PoquetteCanadaBernardo Dominic UNQUALIFIED
Faith GillianItalyIvan Magalhaes NEW
Maisha RulapaughUnited KingdomIoni Bowcher QUALIFIED
Aruna FigeroaArgentinaIoni Bowcher QUALIFIED
Greenwood BologniaUnited KingdomIoni Bowcher PROPOSAL
Nicolas IturbideIndiaOnyama Limba PROPOSAL
Clifford RimSpainIoni Bowcher PROPOSAL
Tony FollerSpainIvan Magalhaes QUALIFIED
Aruna FigeroaSpainAsiya Javayant NEW
Nicolas IturbideArgentinaOnyama Limba NEGOTIATION
Aika InouyeAustraliaIvan Magalhaes UNQUALIFIED
Stacey MacleadAustraliaBernardo Dominic RENEWAL
Leon OldroydFranceAmy Elsner RENEWAL
Nicolas IturbideAustraliaIoni Bowcher NEW
Silvio SlusarskiIndiaXuxue Feng UNQUALIFIED
Alejandro PerinItalyAnna Fali NEGOTIATION
James ButtBrazilAmy Elsner NEW
Jones VocelkaGermanyStephen Shaw NEW
Octavia MaletItalyXuxue Feng PROPOSAL
Leon OldroydJapanAnna Fali RENEWAL
Leja CaldareraAustraliaElwin Sharvill QUALIFIED
Munro FerenczJapanElwin Sharvill NEGOTIATION
Francesco ShinkoSpainIvan Magalhaes NEW
Alejandro PerinSpainAsiya Javayant NEGOTIATION
Jennifer AmigonJapanBernardo Dominic QUALIFIED
Smith GlickFranceIoni Bowcher NEGOTIATION
Frozen Columns
Name
Leja Caldarera
Tony Foller
Kadeem Flosi
Ashley Doe
Leja Caldarera
Julie Stenseth
Greenwood Bolognia
Faith Gillian
Leja Caldarera
Aruna Figeroa
Aika Inouye
Murillo Malet
Maisha Rulapaugh
Jefferson Schemmer
Johnson Sergi
Aditya Kusko
Rodrigues Campain
Jones Vocelka
Alejandro Perin
Arvin Albares
Julie Stenseth
Arvin Albares
Antonio Caudy
Jennifer Amigon
Kadeem Flosi
Sinclair Waycott
Aika Inouye
Misaki Royster
Aditya Kusko
Aruna Figeroa
Juan Wieser
Ivar Paprocki
Mayumi Kolmetz
Tony Foller
Izzy Garufi
Silvio Slusarski
Misaki Royster
Silvio Slusarski
Aditya Kusko
Johnson Sergi
Faith Gillian
Alejandro Perin
Darci Poquette
Jones Vocelka
Aditya Kusko
Mayumi Kolmetz
Kadeem Flosi
Aditya Kusko
Leja Caldarera
Faith Gillian
IdCountryDate
1000Brazil2026-05-28
1001United Kingdom2026-06-08
1002India2026-06-02
1003India2026-05-30
1004Brazil2026-06-01
1005France2026-05-25
1006Italy2026-06-10
1007France2026-06-16
1008Australia2026-06-05
1009Argentina2026-05-23
1010United Kingdom2026-06-12
1011Canada2026-06-19
1012Japan2026-06-02
1013Australia2026-06-12
1014Spain2026-06-15
1015Japan2026-06-10
1016Brazil2026-06-08
1017Australia2026-06-12
1018India2026-06-10
1019Spain2026-06-04
1020Argentina2026-05-26
1021France2026-06-04
1022Brazil2026-06-02
1023Brazil2026-06-07
1024United Kingdom2026-06-02
1025Canada2026-05-23
1026Brazil2026-06-06
1027Canada2026-06-14
1028Italy2026-06-17
1029Spain2026-06-16
1030Japan2026-06-19
1031Canada2026-06-11
1032Russia2026-06-07
1033Japan2026-05-23
1034Russia2026-06-06
1035Argentina2026-06-18
1036Italy2026-05-30
1037United Kingdom2026-06-08
1038India2026-06-13
1039Japan2026-05-23
1040Canada2026-05-29
1041Canada2026-06-06
1042Italy2026-06-06
1043India2026-06-01
1044Japan2026-05-26
1045Australia2026-06-01
1046Germany2026-05-22
1047Australia2026-06-01
1048Brazil2026-05-25
1049France2026-06-16

On-Demand Data

NameIdCountryDate
Leon Oldroyd1000Argentina2026-06-12
Mayumi Kolmetz1001Spain2026-05-24
Darci Poquette1002Argentina2026-05-23
Adams Morasca1003India2026-06-11
Isabel Bowley1004Japan2026-05-31
Stacey Maclead1005United Kingdom2026-06-11
Misaki Royster1006India2026-05-23
Jefferson Schemmer1007Japan2026-06-15
Antonio Caudy1008Germany2026-05-26
Murillo Malet1009Japan2026-05-29
Tony Foller1010Canada2026-05-22
Salvatore Stockham1011India2026-06-01
Ricardo Gaucho1012Argentina2026-06-13
Leja Caldarera1013Canada2026-06-16
Maria Marrier1014Italy2026-06-06
Jennifer Amigon1015United Kingdom2026-05-23
Munro Ferencz1016Spain2026-06-15
Izzy Garufi1017Canada2026-05-31
Munro Ferencz1018Canada2026-05-22
David Darakjy1019Germany2026-06-18
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Salvatore StockhamSpainAmy Elsner UNQUALIFIED
Leja CaldareraArgentinaIvan Magalhaes NEGOTIATION
Chavez BriddickItalyAmy Elsner NEW
Ashley DoeSpainXuxue Feng NEGOTIATION
Francesco ShinkoCanadaBernardo Dominic UNQUALIFIED
Chavez BriddickIndiaBernardo Dominic NEGOTIATION
Munro FerenczCanadaAnna Fali QUALIFIED
Chavez BriddickItalyAmy Elsner QUALIFIED
Izzy GarufiCanadaElwin Sharvill QUALIFIED
Julie StensethFranceIoni Bowcher QUALIFIED
Maria MarrierJapanStephen Shaw RENEWAL
Chavez BriddickFranceAsiya Javayant NEW
Wickens NestleAustraliaStephen Shaw RENEWAL
Adams MorascaItalyXuxue Feng RENEWAL
Faith GillianJapanAmy Elsner QUALIFIED
Nicolas IturbideCanadaAmy Elsner NEGOTIATION
Kaitlin OstroskyUnited KingdomBernardo Dominic NEGOTIATION
Jeanfrancois VenereArgentinaIoni Bowcher PROPOSAL
Sinclair WaycottFranceOnyama Limba NEGOTIATION
Jennifer AmigonArgentinaStephen Shaw QUALIFIED
Octavia MaletRussiaOnyama Limba RENEWAL
Francesco ShinkoUnited KingdomAsiya Javayant QUALIFIED
Isabel BowleyIndiaBernardo Dominic UNQUALIFIED
James ButtItalyAsiya Javayant QUALIFIED
Munro FerenczBrazilAsiya Javayant RENEWAL
Arvin AlbaresBrazilElwin Sharvill QUALIFIED
Smith GlickIndiaXuxue Feng RENEWAL
Munro FerenczCanadaStephen Shaw QUALIFIED
Emily WhobreyRussiaIoni Bowcher UNQUALIFIED
Jennifer AmigonRussiaElwin Sharvill RENEWAL
Aika InouyeItalyBernardo Dominic PROPOSAL
Adams MorascaSpainAsiya Javayant QUALIFIED
David DarakjyRussiaBernardo Dominic RENEWAL
Sinclair WaycottSpainIvan Magalhaes QUALIFIED
Salvatore StockhamJapanAmy Elsner RENEWAL
Rodrigues CampainBrazilAnna Fali QUALIFIED
Arvin AlbaresJapanElwin Sharvill RENEWAL
Mayumi KolmetzGermanyElwin Sharvill QUALIFIED
Izzy GarufiCanadaXuxue Feng NEGOTIATION
Munro FerenczJapanIoni 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>