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
Mayumi KolmetzUnited KingdomIoni Bowcher UNQUALIFIED
Antonio CaudyCanadaXuxue Feng RENEWAL
Claire TollnerJapanIoni Bowcher UNQUALIFIED
Adams MorascaBrazilIvan Magalhaes NEW
Kadeem FlosiGermanyElwin Sharvill PROPOSAL
Jennifer AmigonIndiaIvan Magalhaes NEGOTIATION
Jeanfrancois VenereAustraliaElwin Sharvill NEW
Aruna FigeroaItalyIvan Magalhaes RENEWAL
Julie StensethSpainXuxue Feng UNQUALIFIED
Alejandro PerinUnited KingdomStephen Shaw RENEWAL
Antonio CaudyGermanyIoni Bowcher NEW
Misaki RoysterItalyAsiya Javayant RENEWAL
Johnson SergiItalyIvan Magalhaes PROPOSAL
Misaki RoysterJapanElwin Sharvill NEGOTIATION
Jones VocelkaSpainAnna Fali PROPOSAL
Greenwood BologniaUnited KingdomAnna Fali NEGOTIATION
Cody SaylorsGermanyAmy Elsner RENEWAL
Jennifer AmigonJapanIoni Bowcher NEW
James ButtArgentinaAnna Fali PROPOSAL
Maisha RulapaughJapanAmy Elsner UNQUALIFIED
Leja CaldareraAustraliaIoni Bowcher QUALIFIED
Ricardo GauchoRussiaIvan Magalhaes RENEWAL
Leon OldroydItalyAnna Fali UNQUALIFIED
Darci PoquetteItalyOnyama Limba RENEWAL
Ivar PaprockiItalyAsiya Javayant QUALIFIED
Adams MorascaItalyXuxue Feng PROPOSAL
Silvio SlusarskiUnited KingdomStephen Shaw UNQUALIFIED
Francesco ShinkoArgentinaAnna Fali PROPOSAL
Aditya KuskoRussiaElwin Sharvill UNQUALIFIED
Leon OldroydAustraliaAmy Elsner NEW
Arvin AlbaresFranceXuxue Feng RENEWAL
Murillo MaletArgentinaElwin Sharvill UNQUALIFIED
Chavez BriddickJapanIoni Bowcher UNQUALIFIED
James ButtIndiaAsiya Javayant QUALIFIED
Munro FerenczIndiaStephen Shaw NEW
Adams MorascaBrazilIoni Bowcher UNQUALIFIED
Francesco ShinkoItalyIoni Bowcher RENEWAL
Morrow RutaBrazilIvan Magalhaes NEW
Claire TollnerBrazilAnna Fali UNQUALIFIED
Nicolas IturbideBrazilIvan Magalhaes NEGOTIATION
Maria MarrierSpainXuxue Feng NEW
Deepesh ChuiItalyStephen Shaw NEGOTIATION
Jones VocelkaGermanyAmy Elsner RENEWAL
Ashley DoeGermanyOnyama Limba QUALIFIED
Mayumi KolmetzArgentinaAnna Fali NEW
Mayumi KolmetzJapanOnyama Limba PROPOSAL
Antonio CaudyRussiaAnna Fali NEGOTIATION
James ButtArgentinaAmy Elsner QUALIFIED
James ButtCanadaAsiya Javayant PROPOSAL
Nicolas IturbideGermanyXuxue Feng RENEWAL
Horizontal
NameCountryRepresentativeStatus
Chavez BriddickGermanyElwin Sharvill QUALIFIED
Wickens NestleItalyStephen Shaw RENEWAL
Jefferson SchemmerAustraliaElwin Sharvill NEGOTIATION
Tony FollerArgentinaStephen Shaw RENEWAL
Jennifer AmigonItalyXuxue Feng PROPOSAL
Kadeem FlosiBrazilAmy Elsner QUALIFIED
Salvatore StockhamIndiaXuxue Feng PROPOSAL
Murillo MaletUnited KingdomElwin Sharvill UNQUALIFIED
Julie StensethRussiaAsiya Javayant UNQUALIFIED
Arvin AlbaresArgentinaBernardo Dominic QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Smith GlickRussia2026-05-01Chanay, Jeffrey A Esq NEGOTIATION66Ivan Magalhaes
1001Greenwood BologniaItaly2026-05-19Rangoni Of Florence RENEWAL66Xuxue Feng
1002Maisha RulapaughIndia2026-04-26Feiner Bros NEW43Stephen Shaw
1003Smith GlickItaly2026-04-29Chanay, Jeffrey A Esq QUALIFIED41Bernardo Dominic
1004Silvio SlusarskiGermany2026-05-06Truhlar And Truhlar Attys PROPOSAL89Ioni Bowcher
1005Maria MarrierJapan2026-05-20Printing Dimensions NEW69Asiya Javayant
1006Darci PoquetteItaly2026-04-30Rousseaux, Michael Esq QUALIFIED71Asiya Javayant
1007Adams MorascaArgentina2026-04-24Morlong Associates NEGOTIATION45Ivan Magalhaes
1008Jefferson SchemmerArgentina2026-05-15Commercial Press UNQUALIFIED76Amy Elsner
1009Izzy GarufiArgentina2026-05-18Chanay, Jeffrey A Esq QUALIFIED25Amy Elsner
1010Clifford RimBrazil2026-05-14Morlong Associates PROPOSAL79Stephen Shaw
1011Mayumi KolmetzJapan2026-04-22Feiner Bros UNQUALIFIED22Elwin Sharvill
1012Julie StensethIndia2026-05-08Rangoni Of Florence RENEWAL0Bernardo Dominic
1013Munro FerenczGermany2026-05-11Dorl, James J Esq NEW35Bernardo Dominic
1014Darci PoquetteRussia2026-05-19Feiner Bros NEGOTIATION83Elwin Sharvill
1015Ashley DoeUnited Kingdom2026-05-19Morlong Associates RENEWAL15Stephen Shaw
1016Adams MorascaRussia2026-05-14Rousseaux, Michael Esq NEW53Onyama Limba
1017Leon OldroydFrance2026-05-20Chanay, Jeffrey A Esq NEW56Ivan Magalhaes
1018Misaki RoysterItaly2026-05-13Rangoni Of Florence UNQUALIFIED94Ivan Magalhaes
1019Aditya KuskoGermany2026-05-15Truhlar And Truhlar Attys NEW96Ioni Bowcher
1020Smith GlickBrazil2026-05-15Feiner Bros QUALIFIED39Stephen Shaw
1021Morrow RutaGermany2026-05-20Feiner Bros UNQUALIFIED1Amy Elsner
1022Deepesh ChuiCanada2026-04-22Benton, John B Jr PROPOSAL43Asiya Javayant
1023Emily WhobreyIndia2026-05-20Benton, John B Jr RENEWAL42Asiya Javayant
1024Nicolas IturbideBrazil2026-04-30Morlong Associates QUALIFIED30Ioni Bowcher
1025Claire TollnerArgentina2026-05-02Rousseaux, Michael Esq PROPOSAL20Bernardo Dominic
1026Octavia MaletSpain2026-05-17Printing Dimensions QUALIFIED34Amy Elsner
1027Silvio SlusarskiSpain2026-04-22Dorl, James J Esq UNQUALIFIED0Bernardo Dominic
1028Jeanfrancois VenereIndia2026-05-12Chemel, James L Cpa PROPOSAL26Xuxue Feng
1029Jones VocelkaJapan2026-05-18Printing Dimensions NEGOTIATION95Onyama Limba
1030Morrow RutaFrance2026-05-12Printing Dimensions UNQUALIFIED11Anna Fali
1031Deepesh ChuiIndia2026-05-06Benton, John B Jr NEGOTIATION78Onyama Limba
1032Tony FollerRussia2026-05-07Commercial Press PROPOSAL47Onyama Limba
1033Francesco ShinkoItaly2026-04-28Printing Dimensions PROPOSAL46Elwin Sharvill
1034Aditya KuskoSpain2026-05-09Truhlar And Truhlar Attys RENEWAL95Asiya Javayant
1035Johnson SergiSpain2026-05-20Benton, John B Jr QUALIFIED82Xuxue Feng
1036Maisha RulapaughRussia2026-05-09Dorl, James J Esq RENEWAL28Anna Fali
1037Aruna FigeroaCanada2026-05-21Morlong Associates QUALIFIED0Asiya Javayant
1038Alejandro PerinUnited Kingdom2026-05-18Chapman, Ross E Esq NEGOTIATION62Onyama Limba
1039Ashley DoeUnited Kingdom2026-05-07Chapman, Ross E Esq QUALIFIED46Xuxue Feng
1040Mayumi KolmetzItaly2026-05-14Truhlar And Truhlar Attys PROPOSAL40Stephen Shaw
1041James ButtBrazil2026-05-05Chanay, Jeffrey A Esq UNQUALIFIED93Ioni Bowcher
1042Aika InouyeGermany2026-05-01Chapman, Ross E Esq QUALIFIED15Asiya Javayant
1043Leja CaldareraJapan2026-04-24Printing Dimensions NEW34Ivan Magalhaes
1044Costa DilliardRussia2026-05-08King, Christopher A Esq PROPOSAL41Xuxue Feng
1045Wickens NestleArgentina2026-04-30Benton, John B Jr PROPOSAL94Elwin Sharvill
1046Adams MorascaItaly2026-05-11Dorl, James J Esq PROPOSAL38Ioni Bowcher
1047Nicolas IturbideJapan2026-04-26King, Christopher A Esq RENEWAL36Ioni Bowcher
1048Silvio SlusarskiItaly2026-05-03Rangoni Of Florence QUALIFIED16Ioni Bowcher
1049Aruna FigeroaSpain2026-05-16King, Christopher A Esq PROPOSAL90Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Claire TollnerGermanyXuxue Feng RENEWAL
Costa DilliardBrazilIoni Bowcher PROPOSAL
Salvatore StockhamFranceElwin Sharvill QUALIFIED
Isabel BowleyBrazilElwin Sharvill RENEWAL
Greenwood BologniaGermanyAmy Elsner NEGOTIATION
Kadeem FlosiJapanIoni Bowcher NEGOTIATION
Jones VocelkaBrazilStephen Shaw RENEWAL
Ashley DoeAustraliaStephen Shaw UNQUALIFIED
Ashley DoeGermanyBernardo Dominic QUALIFIED
Jones VocelkaBrazilStephen Shaw QUALIFIED
Antonio CaudyJapanAnna Fali UNQUALIFIED
Aruna FigeroaBrazilAsiya Javayant RENEWAL
Morrow RutaIndiaElwin Sharvill RENEWAL
Adams MorascaRussiaAnna Fali RENEWAL
Deepesh ChuiGermanyElwin Sharvill UNQUALIFIED
Kadeem FlosiUnited KingdomIvan Magalhaes NEW
Murillo MaletArgentinaStephen Shaw NEGOTIATION
Chavez BriddickJapanIvan Magalhaes NEW
James ButtGermanyElwin Sharvill RENEWAL
Mayumi KolmetzJapanBernardo Dominic RENEWAL
Arvin AlbaresArgentinaAmy Elsner UNQUALIFIED
Ivar PaprockiJapanBernardo Dominic RENEWAL
David DarakjySpainStephen Shaw NEW
David DarakjyRussiaAsiya Javayant NEGOTIATION
Maria MarrierJapanIoni Bowcher QUALIFIED
Munro FerenczGermanyBernardo Dominic RENEWAL
Maria MarrierItalyIvan Magalhaes NEGOTIATION
Kadeem FlosiUnited KingdomIvan Magalhaes PROPOSAL
Isabel BowleySpainElwin Sharvill NEW
Murillo MaletIndiaStephen Shaw NEW
Arvin AlbaresJapanAsiya Javayant NEGOTIATION
Jeanfrancois VenereUnited KingdomIvan Magalhaes UNQUALIFIED
Aika InouyeAustraliaBernardo Dominic PROPOSAL
James ButtSpainBernardo Dominic NEW
Wickens NestleJapanIoni Bowcher NEW
Leon OldroydArgentinaAmy Elsner UNQUALIFIED
Murillo MaletSpainBernardo Dominic RENEWAL
Ricardo GauchoGermanyAmy Elsner NEGOTIATION
Misaki RoysterJapanAmy Elsner NEW
Ivar PaprockiArgentinaOnyama Limba QUALIFIED
Ivar PaprockiFranceAsiya Javayant UNQUALIFIED
Ashley DoeGermanyXuxue Feng RENEWAL
Francesco ShinkoRussiaIvan Magalhaes NEGOTIATION
Darci PoquetteGermanyBernardo Dominic NEGOTIATION
Rodrigues CampainJapanStephen Shaw NEGOTIATION
Aika InouyeGermanyXuxue Feng RENEWAL
Ricardo GauchoGermanyIvan Magalhaes UNQUALIFIED
Rodrigues CampainUnited KingdomStephen Shaw UNQUALIFIED
Clifford RimBrazilAmy Elsner RENEWAL
Chavez BriddickJapanIvan Magalhaes NEW
Frozen Columns
Name
Chavez Briddick
Wickens Nestle
Adams Morasca
Rodrigues Campain
Morrow Ruta
Emily Whobrey
Maisha Rulapaugh
Leja Caldarera
Rodrigues Campain
Chavez Briddick
Costa Dilliard
Leon Oldroyd
Ricardo Gaucho
Aditya Kusko
Isabel Bowley
James Butt
Morrow Ruta
Costa Dilliard
Munro Ferencz
Rodrigues Campain
Silvio Slusarski
Kadeem Flosi
Adams Morasca
Isabel Bowley
Aruna Figeroa
Alejandro Perin
Morrow Ruta
Rodrigues Campain
Francesco Shinko
Deepesh Chui
Smith Glick
Antonio Caudy
Francesco Shinko
Jeanfrancois Venere
Aditya Kusko
Kaitlin Ostrosky
Deepesh Chui
Isabel Bowley
Greenwood Bolognia
Jeanfrancois Venere
Kaitlin Ostrosky
Wickens Nestle
Misaki Royster
Ivar Paprocki
Costa Dilliard
Ashley Doe
Aditya Kusko
Salvatore Stockham
Maria Marrier
Mujtaba Nicka
IdCountryDate
1000Italy2026-05-17
1001Italy2026-04-30
1002France2026-05-17
1003Germany2026-05-15
1004Argentina2026-05-18
1005Japan2026-05-11
1006United Kingdom2026-04-23
1007Germany2026-05-14
1008Spain2026-05-19
1009France2026-04-27
1010Australia2026-04-29
1011Argentina2026-04-30
1012United Kingdom2026-05-10
1013France2026-05-13
1014France2026-05-11
1015Japan2026-05-03
1016Argentina2026-04-22
1017Spain2026-04-24
1018Australia2026-04-24
1019Canada2026-04-22
1020France2026-04-24
1021Spain2026-05-14
1022United Kingdom2026-05-16
1023Italy2026-05-19
1024Germany2026-05-02
1025India2026-05-14
1026Italy2026-04-24
1027Brazil2026-05-16
1028India2026-05-17
1029India2026-05-20
1030India2026-05-14
1031United Kingdom2026-04-23
1032United Kingdom2026-05-21
1033Japan2026-05-02
1034Germany2026-05-07
1035Canada2026-05-06
1036Italy2026-05-04
1037Russia2026-04-27
1038France2026-05-20
1039Canada2026-05-13
1040Brazil2026-05-07
1041France2026-04-28
1042Japan2026-05-09
1043Russia2026-04-30
1044Argentina2026-05-20
1045United Kingdom2026-04-22
1046United Kingdom2026-05-03
1047Canada2026-04-25
1048India2026-05-01
1049Brazil2026-04-22

On-Demand Data

NameIdCountryDate
Kadeem Flosi1000India2026-04-28
Jeanfrancois Venere1001Spain2026-04-23
Maisha Rulapaugh1002France2026-04-28
Chavez Briddick1003Spain2026-04-27
Nicolas Iturbide1004Australia2026-05-20
Misaki Royster1005Germany2026-05-14
Ricardo Gaucho1006Italy2026-04-24
Sinclair Waycott1007France2026-05-06
Deepesh Chui1008Australia2026-04-29
Sinclair Waycott1009Argentina2026-04-30
Julie Stenseth1010United Kingdom2026-04-28
Juan Wieser1011Argentina2026-04-24
Emily Whobrey1012Brazil2026-05-17
Kaitlin Ostrosky1013United Kingdom2026-04-23
Izzy Garufi1014Canada2026-04-30
David Darakjy1015Japan2026-05-16
Juan Wieser1016France2026-05-18
Jones Vocelka1017Australia2026-04-26
Aika Inouye1018United Kingdom2026-05-10
Leja Caldarera1019India2026-05-03
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Darci PoquetteRussiaXuxue Feng RENEWAL
Octavia MaletSpainAmy Elsner PROPOSAL
David DarakjyAustraliaAnna Fali QUALIFIED
Murillo MaletRussiaElwin Sharvill UNQUALIFIED
Smith GlickItalyElwin Sharvill NEW
Ivar PaprockiAustraliaAnna Fali RENEWAL
Stacey MacleadSpainElwin Sharvill NEW
Greenwood BologniaBrazilXuxue Feng UNQUALIFIED
Claire TollnerRussiaAmy Elsner RENEWAL
Deepesh ChuiCanadaIvan Magalhaes NEGOTIATION
Arvin AlbaresCanadaAmy Elsner PROPOSAL
Cody SaylorsItalyXuxue Feng UNQUALIFIED
Cody SaylorsGermanyIvan Magalhaes NEW
Adams MorascaUnited KingdomOnyama Limba UNQUALIFIED
Claire TollnerCanadaBernardo Dominic NEW
Deepesh ChuiCanadaStephen Shaw NEGOTIATION
Jones VocelkaUnited KingdomStephen Shaw NEW
Maria MarrierGermanyIoni Bowcher NEGOTIATION
Leon OldroydRussiaXuxue Feng QUALIFIED
Munro FerenczFranceElwin Sharvill NEW
Aditya KuskoItalyElwin Sharvill NEW
Octavia MaletBrazilAmy Elsner QUALIFIED
Izzy GarufiFranceAnna Fali PROPOSAL
Izzy GarufiSpainStephen Shaw PROPOSAL
Greenwood BologniaFranceAnna Fali NEW
Rodrigues CampainArgentinaBernardo Dominic UNQUALIFIED
James ButtBrazilAnna Fali RENEWAL
Darci PoquetteUnited KingdomAsiya Javayant RENEWAL
Silvio SlusarskiAustraliaOnyama Limba QUALIFIED
Nicolas IturbideRussiaStephen Shaw NEW
Francesco ShinkoRussiaXuxue Feng UNQUALIFIED
Morrow RutaArgentinaBernardo Dominic RENEWAL
Francesco ShinkoJapanXuxue Feng RENEWAL
Isabel BowleySpainXuxue Feng PROPOSAL
Nicolas IturbideGermanyOnyama Limba QUALIFIED
Munro FerenczRussiaXuxue Feng NEW
Cody SaylorsGermanyIoni Bowcher UNQUALIFIED
Wickens NestleItalyBernardo Dominic PROPOSAL
Cody SaylorsGermanyIoni Bowcher UNQUALIFIED
Sinclair WaycottFranceStephen Shaw 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>