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
Cody SaylorsAustraliaElwin Sharvill QUALIFIED
Cody SaylorsAustraliaIoni Bowcher UNQUALIFIED
Adams MorascaFranceXuxue Feng RENEWAL
Claire TollnerAustraliaAsiya Javayant QUALIFIED
Misaki RoysterFranceElwin Sharvill QUALIFIED
Nicolas IturbideArgentinaElwin Sharvill PROPOSAL
Leon OldroydGermanyIvan Magalhaes RENEWAL
Costa DilliardCanadaAsiya Javayant UNQUALIFIED
Stacey MacleadJapanAmy Elsner NEW
Costa DilliardUnited KingdomAsiya Javayant RENEWAL
Mayumi KolmetzArgentinaIvan Magalhaes PROPOSAL
Costa DilliardItalyXuxue Feng NEW
Antonio CaudyUnited KingdomBernardo Dominic QUALIFIED
Ivar PaprockiBrazilIoni Bowcher QUALIFIED
Antonio CaudyJapanStephen Shaw NEW
Isabel BowleyBrazilOnyama Limba PROPOSAL
Johnson SergiGermanyBernardo Dominic NEW
Aika InouyeArgentinaBernardo Dominic RENEWAL
Darci PoquetteIndiaElwin Sharvill PROPOSAL
Tony FollerJapanAnna Fali QUALIFIED
Rodrigues CampainGermanyOnyama Limba UNQUALIFIED
Cody SaylorsBrazilOnyama Limba NEGOTIATION
Sinclair WaycottJapanIoni Bowcher UNQUALIFIED
Salvatore StockhamCanadaAnna Fali RENEWAL
Emily WhobreyArgentinaIvan Magalhaes RENEWAL
Stacey MacleadGermanyOnyama Limba PROPOSAL
Jones VocelkaAustraliaOnyama Limba UNQUALIFIED
Adams MorascaBrazilAsiya Javayant NEGOTIATION
Darci PoquetteSpainIvan Magalhaes NEW
Cody SaylorsGermanyBernardo Dominic QUALIFIED
Emily WhobreySpainElwin Sharvill NEGOTIATION
Costa DilliardArgentinaAsiya Javayant PROPOSAL
Jefferson SchemmerRussiaOnyama Limba PROPOSAL
Ricardo GauchoIndiaXuxue Feng NEGOTIATION
Julie StensethSpainXuxue Feng RENEWAL
Mayumi KolmetzRussiaXuxue Feng RENEWAL
Juan WieserSpainAnna Fali NEW
Deepesh ChuiArgentinaElwin Sharvill PROPOSAL
Cody SaylorsFranceStephen Shaw RENEWAL
Aruna FigeroaItalyStephen Shaw PROPOSAL
Misaki RoysterAustraliaBernardo Dominic NEGOTIATION
Greenwood BologniaUnited KingdomOnyama Limba NEW
Ricardo GauchoCanadaAsiya Javayant NEGOTIATION
Aruna FigeroaGermanyStephen Shaw NEW
Ashley DoeRussiaAsiya Javayant PROPOSAL
Cody SaylorsRussiaIvan Magalhaes PROPOSAL
Jones VocelkaIndiaAmy Elsner NEGOTIATION
Wickens NestleBrazilAsiya Javayant RENEWAL
Antonio CaudyCanadaIvan Magalhaes PROPOSAL
Antonio CaudyItalyOnyama Limba RENEWAL
Horizontal
NameCountryRepresentativeStatus
Faith GillianBrazilElwin Sharvill NEW
Mujtaba NickaAustraliaXuxue Feng NEGOTIATION
Sinclair WaycottGermanyStephen Shaw NEGOTIATION
Jeanfrancois VenereBrazilBernardo Dominic PROPOSAL
Aruna FigeroaCanadaOnyama Limba NEGOTIATION
Ashley DoeCanadaAmy Elsner QUALIFIED
Smith GlickArgentinaIoni Bowcher NEGOTIATION
James ButtAustraliaIvan Magalhaes UNQUALIFIED
Jeanfrancois VenereIndiaStephen Shaw RENEWAL
Sinclair WaycottSpainStephen Shaw RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Leja CaldareraFrance2026-03-25King, Christopher A Esq NEGOTIATION13Elwin Sharvill
1001Leon OldroydArgentina2026-04-14Chanay, Jeffrey A Esq PROPOSAL67Amy Elsner
1002David DarakjyArgentina2026-03-21Truhlar And Truhlar Attys RENEWAL43Ivan Magalhaes
1003Chavez BriddickBrazil2026-03-21Buckley Miller Wright NEGOTIATION21Asiya Javayant
1004Darci PoquetteIndia2026-03-26Benton, John B Jr UNQUALIFIED73Anna Fali
1005Alejandro PerinArgentina2026-03-23Printing Dimensions QUALIFIED27Anna Fali
1006Costa DilliardUnited Kingdom2026-04-02Morlong Associates QUALIFIED8Amy Elsner
1007Francesco ShinkoCanada2026-04-05Morlong Associates PROPOSAL99Stephen Shaw
1008Aditya KuskoAustralia2026-04-02Chanay, Jeffrey A Esq PROPOSAL54Asiya Javayant
1009Rodrigues CampainAustralia2026-03-21Printing Dimensions RENEWAL26Amy Elsner
1010Emily WhobreyGermany2026-04-17Morlong Associates NEGOTIATION62Xuxue Feng
1011Arvin AlbaresItaly2026-04-16Truhlar And Truhlar Attys PROPOSAL59Anna Fali
1012Aruna FigeroaJapan2026-03-25Feltz Printing Service PROPOSAL71Xuxue Feng
1013Isabel BowleyUnited Kingdom2026-04-02Chemel, James L Cpa PROPOSAL37Ivan Magalhaes
1014Tony FollerRussia2026-03-31Rousseaux, Michael Esq RENEWAL39Asiya Javayant
1015Morrow RutaBrazil2026-04-11Buckley Miller Wright PROPOSAL67Anna Fali
1016Nicolas IturbideCanada2026-04-01Chapman, Ross E Esq NEGOTIATION18Onyama Limba
1017Arvin AlbaresGermany2026-04-17Printing Dimensions UNQUALIFIED48Xuxue Feng
1018James ButtIndia2026-03-24Commercial Press NEW39Amy Elsner
1019Octavia MaletItaly2026-03-27Commercial Press NEW14Amy Elsner
1020Clifford RimRussia2026-03-27Chemel, James L Cpa RENEWAL87Elwin Sharvill
1021Silvio SlusarskiJapan2026-04-16Chanay, Jeffrey A Esq RENEWAL50Stephen Shaw
1022Ashley DoeArgentina2026-04-19Printing Dimensions NEGOTIATION74Amy Elsner
1023Maria MarrierGermany2026-04-18Benton, John B Jr NEGOTIATION60Elwin Sharvill
1024James ButtAustralia2026-03-29Buckley Miller Wright PROPOSAL22Bernardo Dominic
1025Octavia MaletJapan2026-04-13Truhlar And Truhlar Attys QUALIFIED46Xuxue Feng
1026Jeanfrancois VenereCanada2026-04-02Truhlar And Truhlar Attys QUALIFIED84Onyama Limba
1027Alejandro PerinJapan2026-03-28Morlong Associates NEW79Anna Fali
1028Cody SaylorsItaly2026-04-10Morlong Associates UNQUALIFIED43Onyama Limba
1029Ivar PaprockiCanada2026-04-04Benton, John B Jr NEW37Anna Fali
1030Julie StensethArgentina2026-04-04Chanay, Jeffrey A Esq RENEWAL37Ivan Magalhaes
1031Greenwood BologniaIndia2026-03-30King, Christopher A Esq NEW33Ivan Magalhaes
1032Kadeem FlosiCanada2026-03-28Chapman, Ross E Esq UNQUALIFIED54Ivan Magalhaes
1033Jefferson SchemmerSpain2026-04-02Feiner Bros PROPOSAL58Ioni Bowcher
1034Stacey MacleadUnited Kingdom2026-04-13Morlong Associates NEW87Amy Elsner
1035Cody SaylorsJapan2026-04-09Chapman, Ross E Esq QUALIFIED87Ioni Bowcher
1036Stacey MacleadJapan2026-03-23Chanay, Jeffrey A Esq PROPOSAL60Bernardo Dominic
1037Deepesh ChuiCanada2026-04-16Chanay, Jeffrey A Esq RENEWAL12Anna Fali
1038Rodrigues CampainItaly2026-03-28Chemel, James L Cpa QUALIFIED41Stephen Shaw
1039Francesco ShinkoItaly2026-04-18Rousseaux, Michael Esq UNQUALIFIED38Anna Fali
1040Emily WhobreyGermany2026-03-30Feltz Printing Service RENEWAL94Stephen Shaw
1041Chavez BriddickArgentina2026-03-26Chapman, Ross E Esq NEGOTIATION3Stephen Shaw
1042Leja CaldareraAustralia2026-04-19Feiner Bros NEW82Ioni Bowcher
1043Kadeem FlosiGermany2026-03-21Chapman, Ross E Esq UNQUALIFIED31Amy Elsner
1044Sinclair WaycottGermany2026-04-16Chanay, Jeffrey A Esq QUALIFIED42Ioni Bowcher
1045Ivar PaprockiItaly2026-04-16Rousseaux, Michael Esq NEGOTIATION81Ivan Magalhaes
1046Smith GlickCanada2026-04-14Chapman, Ross E Esq PROPOSAL81Anna Fali
1047Leon OldroydCanada2026-04-09Chanay, Jeffrey A Esq RENEWAL51Ivan Magalhaes
1048Octavia MaletBrazil2026-04-03Truhlar And Truhlar Attys QUALIFIED96Elwin Sharvill
1049Costa DilliardItaly2026-04-02Commercial Press UNQUALIFIED93Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
David DarakjyUnited KingdomAmy Elsner NEW
Ricardo GauchoCanadaElwin Sharvill QUALIFIED
Chavez BriddickBrazilAsiya Javayant PROPOSAL
Silvio SlusarskiSpainIoni Bowcher NEW
Jennifer AmigonBrazilStephen Shaw NEGOTIATION
Ricardo GauchoBrazilXuxue Feng UNQUALIFIED
Morrow RutaCanadaAnna Fali UNQUALIFIED
Chavez BriddickGermanyXuxue Feng QUALIFIED
Nicolas IturbideIndiaElwin Sharvill NEW
Mayumi KolmetzFranceIoni Bowcher PROPOSAL
David DarakjyRussiaOnyama Limba QUALIFIED
Julie StensethCanadaAmy Elsner RENEWAL
Kadeem FlosiGermanyIvan Magalhaes NEGOTIATION
Kaitlin OstroskyUnited KingdomXuxue Feng NEW
Faith GillianArgentinaBernardo Dominic NEGOTIATION
Rodrigues CampainAustraliaElwin Sharvill UNQUALIFIED
Ivar PaprockiJapanIvan Magalhaes RENEWAL
Smith GlickBrazilAnna Fali RENEWAL
Izzy GarufiUnited KingdomOnyama Limba NEGOTIATION
Wickens NestleItalyOnyama Limba NEW
Aruna FigeroaCanadaElwin Sharvill NEW
Emily WhobreySpainBernardo Dominic RENEWAL
Aika InouyeItalyStephen Shaw NEGOTIATION
Octavia MaletAustraliaStephen Shaw QUALIFIED
Munro FerenczCanadaIoni Bowcher RENEWAL
Deepesh ChuiGermanyElwin Sharvill RENEWAL
Leja CaldareraAustraliaIvan Magalhaes UNQUALIFIED
Nicolas IturbideIndiaElwin Sharvill PROPOSAL
Jones VocelkaUnited KingdomElwin Sharvill PROPOSAL
Faith GillianSpainAnna Fali UNQUALIFIED
Darci PoquetteIndiaStephen Shaw NEW
Morrow RutaUnited KingdomIoni Bowcher NEW
Darci PoquetteJapanAsiya Javayant QUALIFIED
Salvatore StockhamGermanyIvan Magalhaes QUALIFIED
Adams MorascaIndiaElwin Sharvill RENEWAL
James ButtFranceAsiya Javayant NEW
Salvatore StockhamBrazilIvan Magalhaes NEGOTIATION
Jones VocelkaAustraliaElwin Sharvill UNQUALIFIED
Johnson SergiFranceXuxue Feng NEW
Wickens NestleItalyAnna Fali NEGOTIATION
Sinclair WaycottGermanyAnna Fali QUALIFIED
Jefferson SchemmerRussiaXuxue Feng UNQUALIFIED
Greenwood BologniaSpainAmy Elsner PROPOSAL
Kadeem FlosiItalyXuxue Feng QUALIFIED
Maria MarrierCanadaAnna Fali NEGOTIATION
Jeanfrancois VenereFranceStephen Shaw UNQUALIFIED
Morrow RutaAustraliaElwin Sharvill UNQUALIFIED
Darci PoquetteRussiaAsiya Javayant UNQUALIFIED
Ashley DoeAustraliaIvan Magalhaes NEW
Clifford RimSpainIoni Bowcher QUALIFIED
Frozen Columns
Name
Ivar Paprocki
Jefferson Schemmer
Tony Foller
Sinclair Waycott
Johnson Sergi
Misaki Royster
Johnson Sergi
Silvio Slusarski
Antonio Caudy
Kaitlin Ostrosky
David Darakjy
Mujtaba Nicka
Salvatore Stockham
Jefferson Schemmer
Francesco Shinko
Izzy Garufi
Claire Tollner
Tony Foller
Munro Ferencz
Cody Saylors
Deepesh Chui
Isabel Bowley
Maisha Rulapaugh
Munro Ferencz
Munro Ferencz
Costa Dilliard
Tony Foller
Antonio Caudy
Darci Poquette
Aditya Kusko
Jones Vocelka
Greenwood Bolognia
Ricardo Gaucho
Cody Saylors
Deepesh Chui
Tony Foller
Ricardo Gaucho
Jennifer Amigon
Morrow Ruta
Leon Oldroyd
Nicolas Iturbide
Silvio Slusarski
Misaki Royster
Wickens Nestle
Leon Oldroyd
Salvatore Stockham
Arvin Albares
Sinclair Waycott
Sinclair Waycott
Deepesh Chui
IdCountryDate
1000Canada2026-04-12
1001Brazil2026-04-03
1002Argentina2026-04-09
1003Canada2026-04-09
1004Argentina2026-04-02
1005Russia2026-03-24
1006Spain2026-03-22
1007Argentina2026-04-09
1008Australia2026-04-18
1009Germany2026-04-11
1010India2026-03-25
1011Brazil2026-04-03
1012Brazil2026-04-17
1013India2026-03-30
1014Canada2026-03-29
1015Italy2026-04-01
1016Russia2026-04-14
1017Australia2026-04-17
1018Japan2026-04-17
1019Australia2026-04-10
1020Argentina2026-03-26
1021Italy2026-03-30
1022Canada2026-04-17
1023India2026-03-23
1024Australia2026-03-26
1025Spain2026-03-31
1026United Kingdom2026-04-08
1027Australia2026-04-12
1028Canada2026-04-09
1029Argentina2026-04-01
1030Canada2026-04-01
1031India2026-04-19
1032Argentina2026-04-12
1033United Kingdom2026-04-12
1034Germany2026-03-30
1035Brazil2026-04-08
1036Germany2026-03-30
1037Russia2026-03-24
1038Spain2026-04-02
1039Italy2026-04-01
1040Japan2026-03-22
1041Italy2026-03-23
1042Argentina2026-03-21
1043Russia2026-04-07
1044Germany2026-04-03
1045India2026-04-16
1046Russia2026-04-15
1047United Kingdom2026-04-13
1048Italy2026-03-30
1049Spain2026-03-25

On-Demand Data

NameIdCountryDate
Claire Tollner1000Spain2026-04-18
Munro Ferencz1001Brazil2026-03-27
Cody Saylors1002Japan2026-03-27
Alejandro Perin1003Canada2026-04-03
Leja Caldarera1004Brazil2026-04-18
Maisha Rulapaugh1005Spain2026-03-27
Arvin Albares1006France2026-04-19
Maisha Rulapaugh1007United Kingdom2026-04-14
Cody Saylors1008Japan2026-03-30
Jennifer Amigon1009India2026-03-24
Wickens Nestle1010India2026-04-13
Darci Poquette1011United Kingdom2026-04-18
Rodrigues Campain1012Germany2026-04-16
Smith Glick1013Japan2026-04-19
Mayumi Kolmetz1014Australia2026-04-10
James Butt1015Italy2026-04-15
Rodrigues Campain1016Spain2026-04-11
Jennifer Amigon1017India2026-03-23
Jefferson Schemmer1018Canada2026-04-04
Misaki Royster1019United Kingdom2026-03-29
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ashley DoeArgentinaIvan Magalhaes PROPOSAL
Leja CaldareraFranceStephen Shaw UNQUALIFIED
Sinclair WaycottUnited KingdomAsiya Javayant PROPOSAL
Leon OldroydIndiaIoni Bowcher PROPOSAL
Murillo MaletIndiaOnyama Limba RENEWAL
Smith GlickIndiaIoni Bowcher NEW
Faith GillianUnited KingdomXuxue Feng NEGOTIATION
Clifford RimUnited KingdomElwin Sharvill NEGOTIATION
Jones VocelkaAustraliaAmy Elsner PROPOSAL
Jones VocelkaGermanyStephen Shaw NEGOTIATION
Misaki RoysterJapanStephen Shaw NEW
Alejandro PerinUnited KingdomIoni Bowcher UNQUALIFIED
Sinclair WaycottSpainIvan Magalhaes PROPOSAL
Ashley DoeAustraliaAsiya Javayant RENEWAL
Cody SaylorsIndiaElwin Sharvill QUALIFIED
Kaitlin OstroskyIndiaXuxue Feng PROPOSAL
Stacey MacleadUnited KingdomStephen Shaw NEGOTIATION
Adams MorascaItalyAmy Elsner UNQUALIFIED
Costa DilliardRussiaStephen Shaw NEGOTIATION
Greenwood BologniaIndiaIvan Magalhaes UNQUALIFIED
Ricardo GauchoItalyAnna Fali NEGOTIATION
Maria MarrierGermanyBernardo Dominic PROPOSAL
Kaitlin OstroskyCanadaIvan Magalhaes NEW
Nicolas IturbideRussiaBernardo Dominic QUALIFIED
Octavia MaletSpainAmy Elsner QUALIFIED
Jennifer AmigonSpainAsiya Javayant NEW
Arvin AlbaresRussiaOnyama Limba NEGOTIATION
Kaitlin OstroskyItalyStephen Shaw NEGOTIATION
Deepesh ChuiFranceIoni Bowcher NEW
Izzy GarufiCanadaOnyama Limba QUALIFIED
Darci PoquetteBrazilAmy Elsner RENEWAL
Jeanfrancois VenereIndiaIoni Bowcher QUALIFIED
Salvatore StockhamCanadaStephen Shaw UNQUALIFIED
Murillo MaletArgentinaBernardo Dominic RENEWAL
Aika InouyeCanadaStephen Shaw NEW
Stacey MacleadGermanyStephen Shaw NEGOTIATION
Tony FollerAustraliaOnyama Limba QUALIFIED
Stacey MacleadItalyStephen Shaw UNQUALIFIED
Ivar PaprockiIndiaOnyama Limba QUALIFIED
Kadeem FlosiItalyBernardo Dominic NEGOTIATION

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