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 MacleadBrazilIvan Magalhaes RENEWAL
Tony FollerIndiaIvan Magalhaes RENEWAL
Ashley DoeItalyIoni Bowcher RENEWAL
Adams MorascaRussiaIvan Magalhaes PROPOSAL
Greenwood BologniaCanadaElwin Sharvill QUALIFIED
Antonio CaudyFranceOnyama Limba UNQUALIFIED
Maisha RulapaughIndiaOnyama Limba PROPOSAL
Alejandro PerinBrazilIoni Bowcher NEW
Sinclair WaycottArgentinaElwin Sharvill QUALIFIED
Mayumi KolmetzAustraliaElwin Sharvill RENEWAL
Deepesh ChuiItalyIoni Bowcher QUALIFIED
Costa DilliardJapanBernardo Dominic PROPOSAL
Smith GlickSpainStephen Shaw UNQUALIFIED
Costa DilliardFranceBernardo Dominic QUALIFIED
Johnson SergiFranceStephen Shaw NEGOTIATION
Clifford RimBrazilAnna Fali NEW
Aika InouyeUnited KingdomAnna Fali PROPOSAL
Clifford RimAustraliaAnna Fali NEGOTIATION
Stacey MacleadItalyOnyama Limba QUALIFIED
Costa DilliardBrazilAnna Fali RENEWAL
Aditya KuskoFranceAmy Elsner RENEWAL
Juan WieserAustraliaIvan Magalhaes NEGOTIATION
Alejandro PerinBrazilAmy Elsner PROPOSAL
Murillo MaletSpainAmy Elsner NEW
Jefferson SchemmerJapanIoni Bowcher UNQUALIFIED
Morrow RutaArgentinaBernardo Dominic NEW
Kaitlin OstroskyBrazilElwin Sharvill NEW
Leja CaldareraJapanIoni Bowcher NEGOTIATION
Aika InouyeIndiaBernardo Dominic NEW
Claire TollnerJapanElwin Sharvill NEGOTIATION
Stacey MacleadItalyAsiya Javayant QUALIFIED
Antonio CaudyIndiaIvan Magalhaes NEGOTIATION
Arvin AlbaresCanadaStephen Shaw NEW
Antonio CaudyRussiaIoni Bowcher NEW
Leon OldroydSpainAmy Elsner RENEWAL
Smith GlickRussiaIoni Bowcher NEW
Adams MorascaSpainElwin Sharvill UNQUALIFIED
Cody SaylorsCanadaStephen Shaw PROPOSAL
Costa DilliardUnited KingdomAmy Elsner NEGOTIATION
Aika InouyeAustraliaElwin Sharvill RENEWAL
Isabel BowleySpainBernardo Dominic UNQUALIFIED
Stacey MacleadIndiaXuxue Feng PROPOSAL
Julie StensethCanadaAsiya Javayant PROPOSAL
Jennifer AmigonJapanAnna Fali RENEWAL
Smith GlickArgentinaIoni Bowcher RENEWAL
James ButtRussiaStephen Shaw RENEWAL
James ButtAustraliaStephen Shaw UNQUALIFIED
Kaitlin OstroskyIndiaAmy Elsner PROPOSAL
Julie StensethCanadaAsiya Javayant UNQUALIFIED
Salvatore StockhamSpainIvan Magalhaes RENEWAL
Horizontal
NameCountryRepresentativeStatus
Aika InouyeAustraliaAmy Elsner RENEWAL
Rodrigues CampainSpainAnna Fali UNQUALIFIED
David DarakjyJapanStephen Shaw RENEWAL
Mayumi KolmetzGermanyStephen Shaw UNQUALIFIED
Chavez BriddickFranceBernardo Dominic RENEWAL
Morrow RutaAustraliaOnyama Limba RENEWAL
Murillo MaletAustraliaXuxue Feng NEW
Ivar PaprockiArgentinaAsiya Javayant UNQUALIFIED
Mayumi KolmetzFranceAnna Fali QUALIFIED
Ivar PaprockiFranceElwin Sharvill PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Antonio CaudyAustralia2026-04-13Buckley Miller Wright NEGOTIATION76Ivan Magalhaes
1001Arvin AlbaresSpain2026-04-28Chapman, Ross E Esq QUALIFIED3Elwin Sharvill
1002Jones VocelkaRussia2026-04-03Morlong Associates RENEWAL67Elwin Sharvill
1003Morrow RutaBrazil2026-04-09Feiner Bros PROPOSAL10Bernardo Dominic
1004Leon OldroydArgentina2026-04-11Truhlar And Truhlar Attys PROPOSAL32Elwin Sharvill
1005Maria MarrierArgentina2026-04-27Buckley Miller Wright RENEWAL62Asiya Javayant
1006Ricardo GauchoGermany2026-04-23Chemel, James L Cpa NEW29Ioni Bowcher
1007Francesco ShinkoCanada2026-04-25Printing Dimensions UNQUALIFIED48Amy Elsner
1008Adams MorascaBrazil2026-04-25Rousseaux, Michael Esq NEW75Ioni Bowcher
1009Octavia MaletFrance2026-04-11Chanay, Jeffrey A Esq PROPOSAL62Onyama Limba
1010Juan WieserFrance2026-04-11King, Christopher A Esq PROPOSAL64Elwin Sharvill
1011Jennifer AmigonAustralia2026-04-04Feltz Printing Service PROPOSAL95Onyama Limba
1012Adams MorascaBrazil2026-04-06Morlong Associates QUALIFIED30Asiya Javayant
1013Jefferson SchemmerCanada2026-04-13Chemel, James L Cpa RENEWAL36Asiya Javayant
1014Salvatore StockhamItaly2026-04-02Commercial Press UNQUALIFIED32Stephen Shaw
1015Nicolas IturbideGermany2026-04-06Rousseaux, Michael Esq RENEWAL43Bernardo Dominic
1016Claire TollnerAustralia2026-04-12Rangoni Of Florence QUALIFIED48Ivan Magalhaes
1017Aditya KuskoItaly2026-04-18Chanay, Jeffrey A Esq QUALIFIED12Anna Fali
1018Chavez BriddickSpain2026-04-08Dorl, James J Esq NEW3Asiya Javayant
1019Maria MarrierAustralia2026-04-03Printing Dimensions PROPOSAL93Ivan Magalhaes
1020Faith GillianItaly2026-03-31Morlong Associates QUALIFIED5Ioni Bowcher
1021Silvio SlusarskiJapan2026-04-27Feiner Bros NEGOTIATION64Xuxue Feng
1022Emily WhobreyIndia2026-04-20Buckley Miller Wright PROPOSAL74Anna Fali
1023Jefferson SchemmerItaly2026-04-26King, Christopher A Esq UNQUALIFIED78Bernardo Dominic
1024Tony FollerBrazil2026-04-10Feiner Bros RENEWAL98Xuxue Feng
1025Ashley DoeJapan2026-04-27Feiner Bros QUALIFIED37Anna Fali
1026Ashley DoeSpain2026-04-28Chemel, James L Cpa NEW63Stephen Shaw
1027Silvio SlusarskiGermany2026-04-18Rousseaux, Michael Esq NEW86Onyama Limba
1028James ButtIndia2026-04-02Printing Dimensions NEW62Bernardo Dominic
1029Cody SaylorsArgentina2026-04-04Chemel, James L Cpa QUALIFIED21Onyama Limba
1030Julie StensethBrazil2026-04-25Chapman, Ross E Esq RENEWAL42Stephen Shaw
1031Ashley DoeSpain2026-03-31Printing Dimensions RENEWAL5Onyama Limba
1032Johnson SergiJapan2026-04-06Chemel, James L Cpa RENEWAL38Asiya Javayant
1033Rodrigues CampainUnited Kingdom2026-04-26Rangoni Of Florence NEGOTIATION84Amy Elsner
1034Aika InouyeBrazil2026-04-17Chanay, Jeffrey A Esq PROPOSAL85Stephen Shaw
1035Darci PoquetteBrazil2026-04-03Chanay, Jeffrey A Esq RENEWAL52Xuxue Feng
1036Kadeem FlosiCanada2026-04-10Morlong Associates UNQUALIFIED52Elwin Sharvill
1037Mujtaba NickaIndia2026-04-21Printing Dimensions NEGOTIATION32Ivan Magalhaes
1038Costa DilliardArgentina2026-04-27Benton, John B Jr UNQUALIFIED33Xuxue Feng
1039Claire TollnerFrance2026-04-10Dorl, James J Esq UNQUALIFIED79Xuxue Feng
1040Isabel BowleyRussia2026-03-30Chapman, Ross E Esq PROPOSAL11Bernardo Dominic
1041Aruna FigeroaUnited Kingdom2026-04-12King, Christopher A Esq RENEWAL55Onyama Limba
1042Maria MarrierFrance2026-04-01King, Christopher A Esq QUALIFIED94Ioni Bowcher
1043Mayumi KolmetzGermany2026-04-20Truhlar And Truhlar Attys UNQUALIFIED3Onyama Limba
1044Chavez BriddickIndia2026-04-15Chemel, James L Cpa NEGOTIATION11Anna Fali
1045Cody SaylorsItaly2026-04-21Chanay, Jeffrey A Esq RENEWAL21Asiya Javayant
1046David DarakjyIndia2026-04-19Feiner Bros NEW15Ivan Magalhaes
1047Leja CaldareraIndia2026-04-02Feltz Printing Service RENEWAL98Asiya Javayant
1048Darci PoquetteSpain2026-04-13Chemel, James L Cpa QUALIFIED7Ivan Magalhaes
1049David DarakjyIndia2026-04-17Feiner Bros NEW42Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Tony FollerBrazilElwin Sharvill QUALIFIED
Arvin AlbaresFranceAmy Elsner UNQUALIFIED
Greenwood BologniaBrazilElwin Sharvill UNQUALIFIED
Silvio SlusarskiArgentinaAsiya Javayant UNQUALIFIED
Jones VocelkaCanadaIvan Magalhaes NEGOTIATION
Leon OldroydUnited KingdomAsiya Javayant RENEWAL
Aruna FigeroaItalyStephen Shaw QUALIFIED
Stacey MacleadGermanyIoni Bowcher NEGOTIATION
Faith GillianCanadaAnna Fali PROPOSAL
Juan WieserIndiaAnna Fali QUALIFIED
Cody SaylorsBrazilAmy Elsner NEGOTIATION
Aruna FigeroaFranceAsiya Javayant RENEWAL
Rodrigues CampainRussiaIoni Bowcher PROPOSAL
Kadeem FlosiIndiaIoni Bowcher QUALIFIED
Smith GlickCanadaElwin Sharvill NEW
Faith GillianUnited KingdomBernardo Dominic QUALIFIED
Kadeem FlosiCanadaAnna Fali UNQUALIFIED
Maria MarrierGermanyIoni Bowcher UNQUALIFIED
Misaki RoysterAustraliaElwin Sharvill NEW
Maisha RulapaughCanadaAsiya Javayant NEW
Arvin AlbaresArgentinaStephen Shaw UNQUALIFIED
Izzy GarufiGermanyXuxue Feng NEGOTIATION
Francesco ShinkoFranceElwin Sharvill QUALIFIED
Darci PoquetteIndiaAmy Elsner NEGOTIATION
Leja CaldareraBrazilStephen Shaw NEGOTIATION
Murillo MaletFranceStephen Shaw NEGOTIATION
David DarakjySpainAsiya Javayant PROPOSAL
Nicolas IturbideBrazilXuxue Feng NEGOTIATION
Maria MarrierSpainAsiya Javayant NEGOTIATION
Kadeem FlosiItalyBernardo Dominic NEW
Darci PoquetteSpainStephen Shaw NEW
Maisha RulapaughIndiaElwin Sharvill UNQUALIFIED
Adams MorascaGermanyXuxue Feng PROPOSAL
Rodrigues CampainCanadaAsiya Javayant NEGOTIATION
Adams MorascaGermanyIvan Magalhaes UNQUALIFIED
Silvio SlusarskiItalyOnyama Limba QUALIFIED
Stacey MacleadSpainIvan Magalhaes QUALIFIED
Cody SaylorsIndiaXuxue Feng QUALIFIED
Chavez BriddickJapanStephen Shaw NEGOTIATION
Juan WieserFranceAsiya Javayant NEGOTIATION
Jeanfrancois VenereFranceBernardo Dominic PROPOSAL
Kaitlin OstroskyAustraliaAmy Elsner NEW
Clifford RimGermanyAnna Fali RENEWAL
Adams MorascaAustraliaAmy Elsner PROPOSAL
Juan WieserAustraliaStephen Shaw NEGOTIATION
Aruna FigeroaGermanyElwin Sharvill NEW
Arvin AlbaresJapanStephen Shaw NEGOTIATION
Wickens NestleRussiaElwin Sharvill UNQUALIFIED
Leon OldroydItalyOnyama Limba UNQUALIFIED
Antonio CaudyCanadaIoni Bowcher QUALIFIED
Frozen Columns
Name
Adams Morasca
Deepesh Chui
Salvatore Stockham
Aika Inouye
Jefferson Schemmer
Adams Morasca
Ivar Paprocki
Mujtaba Nicka
Stacey Maclead
Jennifer Amigon
Salvatore Stockham
Murillo Malet
Julie Stenseth
Aruna Figeroa
Izzy Garufi
David Darakjy
Claire Tollner
Nicolas Iturbide
Ivar Paprocki
Emily Whobrey
Faith Gillian
Costa Dilliard
Ricardo Gaucho
Arvin Albares
Leja Caldarera
Maria Marrier
Salvatore Stockham
Cody Saylors
Misaki Royster
Salvatore Stockham
Silvio Slusarski
Johnson Sergi
Ricardo Gaucho
Antonio Caudy
Jeanfrancois Venere
Clifford Rim
Leja Caldarera
Faith Gillian
Antonio Caudy
Jeanfrancois Venere
Emily Whobrey
Kadeem Flosi
Adams Morasca
Silvio Slusarski
Rodrigues Campain
Ashley Doe
Francesco Shinko
Leja Caldarera
Wickens Nestle
Greenwood Bolognia
IdCountryDate
1000Australia2026-04-16
1001Germany2026-04-04
1002France2026-04-08
1003Australia2026-04-22
1004United Kingdom2026-04-15
1005Japan2026-04-08
1006Italy2026-04-27
1007Canada2026-04-05
1008Argentina2026-04-22
1009Germany2026-03-31
1010Canada2026-04-27
1011Argentina2026-04-05
1012Australia2026-04-19
1013Japan2026-04-26
1014Australia2026-04-12
1015India2026-04-23
1016Russia2026-04-11
1017India2026-04-19
1018Brazil2026-04-27
1019United Kingdom2026-04-28
1020Italy2026-04-28
1021Canada2026-04-28
1022Canada2026-04-08
1023Argentina2026-04-09
1024India2026-04-28
1025Australia2026-04-24
1026India2026-04-24
1027Brazil2026-04-01
1028United Kingdom2026-04-21
1029Germany2026-04-18
1030Brazil2026-04-27
1031Russia2026-04-05
1032Russia2026-04-09
1033Russia2026-04-10
1034United Kingdom2026-04-02
1035France2026-04-13
1036France2026-04-03
1037Japan2026-04-01
1038Australia2026-04-27
1039Japan2026-04-08
1040Spain2026-04-13
1041Italy2026-04-11
1042Brazil2026-04-20
1043Russia2026-04-08
1044France2026-04-15
1045Brazil2026-04-20
1046Germany2026-04-20
1047Japan2026-04-12
1048Canada2026-04-04
1049Germany2026-03-30

On-Demand Data

NameIdCountryDate
Cody Saylors1000United Kingdom2026-04-09
Aika Inouye1001Italy2026-04-16
Claire Tollner1002Brazil2026-04-04
Darci Poquette1003Canada2026-04-14
Jeanfrancois Venere1004India2026-04-01
Claire Tollner1005Japan2026-04-06
Clifford Rim1006Germany2026-04-15
Mujtaba Nicka1007Russia2026-04-17
Rodrigues Campain1008Germany2026-03-30
Jones Vocelka1009Argentina2026-04-01
Mujtaba Nicka1010United Kingdom2026-04-28
Francesco Shinko1011Japan2026-03-31
Darci Poquette1012Germany2026-04-15
Isabel Bowley1013Italy2026-04-23
Jones Vocelka1014Japan2026-03-31
Maisha Rulapaugh1015Australia2026-03-31
Jones Vocelka1016Australia2026-04-14
Smith Glick1017Canada2026-04-24
Kadeem Flosi1018Argentina2026-04-12
Maisha Rulapaugh1019Russia2026-04-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Wickens NestleArgentinaIvan Magalhaes NEW
Jefferson SchemmerUnited KingdomIvan Magalhaes NEGOTIATION
Stacey MacleadGermanyAmy Elsner UNQUALIFIED
Maisha RulapaughAustraliaStephen Shaw NEW
Greenwood BologniaAustraliaIvan Magalhaes PROPOSAL
Adams MorascaCanadaXuxue Feng QUALIFIED
Nicolas IturbideArgentinaAmy Elsner NEW
Ashley DoeRussiaElwin Sharvill NEGOTIATION
Alejandro PerinBrazilElwin Sharvill NEGOTIATION
James ButtSpainAnna Fali RENEWAL
Adams MorascaGermanyIvan Magalhaes RENEWAL
Adams MorascaFranceStephen Shaw UNQUALIFIED
Cody SaylorsItalyBernardo Dominic RENEWAL
Greenwood BologniaCanadaIoni Bowcher NEW
Izzy GarufiAustraliaOnyama Limba UNQUALIFIED
Greenwood BologniaCanadaIoni Bowcher PROPOSAL
Ricardo GauchoAustraliaElwin Sharvill NEW
Alejandro PerinCanadaIvan Magalhaes RENEWAL
Smith GlickRussiaIoni Bowcher NEW
Faith GillianCanadaOnyama Limba NEGOTIATION
Clifford RimSpainStephen Shaw NEGOTIATION
Kadeem FlosiUnited KingdomStephen Shaw PROPOSAL
Munro FerenczJapanAsiya Javayant UNQUALIFIED
Mayumi KolmetzIndiaIvan Magalhaes NEW
Morrow RutaJapanBernardo Dominic QUALIFIED
David DarakjyGermanyAsiya Javayant QUALIFIED
Ivar PaprockiRussiaAnna Fali PROPOSAL
Murillo MaletRussiaAsiya Javayant RENEWAL
Ashley DoeGermanyElwin Sharvill NEW
Izzy GarufiJapanXuxue Feng RENEWAL
Julie StensethCanadaAnna Fali UNQUALIFIED
Rodrigues CampainSpainXuxue Feng UNQUALIFIED
Wickens NestleJapanElwin Sharvill QUALIFIED
Adams MorascaSpainIvan Magalhaes NEW
Izzy GarufiAustraliaStephen Shaw QUALIFIED
Adams MorascaGermanyStephen Shaw NEW
Ricardo GauchoCanadaOnyama Limba NEGOTIATION
Ricardo GauchoIndiaElwin Sharvill UNQUALIFIED
Octavia MaletRussiaAmy Elsner QUALIFIED
Nicolas IturbideArgentinaIoni 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>