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
Ricardo GauchoJapanAmy Elsner NEW
Murillo MaletIndiaAsiya Javayant RENEWAL
Alejandro PerinCanadaAnna Fali QUALIFIED
Juan WieserRussiaAmy Elsner PROPOSAL
Aditya KuskoCanadaXuxue Feng UNQUALIFIED
Stacey MacleadSpainBernardo Dominic NEGOTIATION
Clifford RimAustraliaAnna Fali NEGOTIATION
Cody SaylorsJapanAsiya Javayant NEW
Ashley DoeCanadaElwin Sharvill QUALIFIED
Alejandro PerinUnited KingdomAsiya Javayant UNQUALIFIED
Arvin AlbaresRussiaIoni Bowcher NEW
Salvatore StockhamCanadaOnyama Limba RENEWAL
Smith GlickAustraliaIoni Bowcher NEGOTIATION
Chavez BriddickSpainXuxue Feng QUALIFIED
Silvio SlusarskiBrazilAmy Elsner NEGOTIATION
Morrow RutaRussiaAmy Elsner UNQUALIFIED
Chavez BriddickIndiaBernardo Dominic NEW
Aika InouyeFranceIvan Magalhaes NEW
David DarakjyJapanOnyama Limba QUALIFIED
Faith GillianItalyAmy Elsner UNQUALIFIED
Clifford RimBrazilOnyama Limba NEW
Ivar PaprockiCanadaAnna Fali UNQUALIFIED
Leja CaldareraBrazilBernardo Dominic QUALIFIED
Francesco ShinkoItalyXuxue Feng UNQUALIFIED
Jefferson SchemmerFranceIvan Magalhaes NEGOTIATION
Munro FerenczBrazilStephen Shaw RENEWAL
Tony FollerBrazilXuxue Feng UNQUALIFIED
Murillo MaletItalyAnna Fali RENEWAL
Misaki RoysterCanadaElwin Sharvill NEW
Costa DilliardFranceAnna Fali UNQUALIFIED
Murillo MaletAustraliaAsiya Javayant NEW
Maria MarrierArgentinaAnna Fali RENEWAL
Julie StensethJapanIvan Magalhaes NEGOTIATION
Stacey MacleadFranceBernardo Dominic QUALIFIED
Clifford RimIndiaStephen Shaw UNQUALIFIED
Maria MarrierSpainAsiya Javayant NEW
Morrow RutaAustraliaXuxue Feng NEGOTIATION
Deepesh ChuiJapanXuxue Feng NEW
Wickens NestleSpainAsiya Javayant NEGOTIATION
Claire TollnerRussiaIvan Magalhaes PROPOSAL
Smith GlickSpainIvan Magalhaes RENEWAL
Jefferson SchemmerAustraliaAmy Elsner NEGOTIATION
Emily WhobreySpainXuxue Feng NEGOTIATION
Ivar PaprockiBrazilAsiya Javayant PROPOSAL
Morrow RutaBrazilAsiya Javayant PROPOSAL
Rodrigues CampainBrazilIoni Bowcher QUALIFIED
Clifford RimFranceIoni Bowcher NEW
Munro FerenczItalyXuxue Feng QUALIFIED
Maisha RulapaughCanadaOnyama Limba UNQUALIFIED
Murillo MaletGermanyIvan Magalhaes NEW
Horizontal
NameCountryRepresentativeStatus
Leon OldroydGermanyAnna Fali RENEWAL
Nicolas IturbideRussiaElwin Sharvill RENEWAL
Deepesh ChuiArgentinaXuxue Feng UNQUALIFIED
Munro FerenczGermanyIvan Magalhaes QUALIFIED
Jefferson SchemmerBrazilAnna Fali NEGOTIATION
Darci PoquetteCanadaAmy Elsner RENEWAL
Juan WieserJapanStephen Shaw PROPOSAL
Ashley DoeSpainIvan Magalhaes QUALIFIED
David DarakjySpainXuxue Feng RENEWAL
Kadeem FlosiCanadaOnyama Limba RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Misaki RoysterAustralia2026-04-04Feiner Bros RENEWAL24Bernardo Dominic
1001Leja CaldareraUnited Kingdom2026-03-24Benton, John B Jr UNQUALIFIED32Bernardo Dominic
1002Aika InouyeAustralia2026-03-24Rangoni Of Florence RENEWAL96Asiya Javayant
1003Leja CaldareraItaly2026-04-17King, Christopher A Esq NEW13Ioni Bowcher
1004Ashley DoeSpain2026-03-31Morlong Associates NEW99Anna Fali
1005Alejandro PerinUnited Kingdom2026-04-09Chanay, Jeffrey A Esq NEGOTIATION84Stephen Shaw
1006Mujtaba NickaBrazil2026-04-21Feltz Printing Service RENEWAL82Bernardo Dominic
1007Stacey MacleadSpain2026-03-27Feiner Bros PROPOSAL56Elwin Sharvill
1008Murillo MaletIndia2026-03-30King, Christopher A Esq PROPOSAL53Anna Fali
1009Stacey MacleadAustralia2026-04-15Chapman, Ross E Esq QUALIFIED15Amy Elsner
1010Izzy GarufiCanada2026-04-07Feiner Bros RENEWAL68Asiya Javayant
1011Wickens NestleJapan2026-03-30Rangoni Of Florence RENEWAL97Elwin Sharvill
1012Jones VocelkaItaly2026-04-17Feiner Bros QUALIFIED98Anna Fali
1013Ivar PaprockiItaly2026-03-31Rangoni Of Florence PROPOSAL62Asiya Javayant
1014Francesco ShinkoItaly2026-04-10Rangoni Of Florence NEGOTIATION5Ioni Bowcher
1015Mayumi KolmetzFrance2026-03-27Printing Dimensions NEW15Asiya Javayant
1016Mayumi KolmetzBrazil2026-04-16Rangoni Of Florence PROPOSAL34Xuxue Feng
1017Ivar PaprockiSpain2026-03-29Commercial Press PROPOSAL58Ioni Bowcher
1018Nicolas IturbideSpain2026-04-10Morlong Associates UNQUALIFIED14Bernardo Dominic
1019Mayumi KolmetzRussia2026-04-22Benton, John B Jr PROPOSAL96Anna Fali
1020Faith GillianSpain2026-03-28Printing Dimensions QUALIFIED2Stephen Shaw
1021Cody SaylorsArgentina2026-04-09Chemel, James L Cpa PROPOSAL94Ioni Bowcher
1022Aditya KuskoFrance2026-03-27Rangoni Of Florence RENEWAL80Elwin Sharvill
1023Smith GlickSpain2026-03-27Buckley Miller Wright RENEWAL82Elwin Sharvill
1024Claire TollnerFrance2026-04-04Printing Dimensions PROPOSAL52Elwin Sharvill
1025Mujtaba NickaSpain2026-04-12King, Christopher A Esq PROPOSAL91Onyama Limba
1026Ashley DoeIndia2026-03-25Chemel, James L Cpa NEW14Onyama Limba
1027Silvio SlusarskiGermany2026-04-16Commercial Press UNQUALIFIED6Amy Elsner
1028Salvatore StockhamCanada2026-04-14Feiner Bros UNQUALIFIED53Xuxue Feng
1029Cody SaylorsAustralia2026-04-03Buckley Miller Wright RENEWAL54Xuxue Feng
1030Juan WieserItaly2026-04-07Rangoni Of Florence NEGOTIATION16Elwin Sharvill
1031Octavia MaletIndia2026-03-25Feiner Bros QUALIFIED20Ivan Magalhaes
1032Stacey MacleadBrazil2026-03-30Rangoni Of Florence NEGOTIATION90Onyama Limba
1033Antonio CaudyItaly2026-04-02Feiner Bros UNQUALIFIED23Ivan Magalhaes
1034Costa DilliardSpain2026-04-12Chanay, Jeffrey A Esq RENEWAL16Bernardo Dominic
1035Maisha RulapaughSpain2026-04-20Morlong Associates QUALIFIED68Xuxue Feng
1036Clifford RimAustralia2026-04-04Feiner Bros UNQUALIFIED48Ivan Magalhaes
1037Leon OldroydFrance2026-04-20Feltz Printing Service NEW56Elwin Sharvill
1038Francesco ShinkoFrance2026-03-26Chanay, Jeffrey A Esq UNQUALIFIED71Bernardo Dominic
1039Morrow RutaCanada2026-03-30Truhlar And Truhlar Attys NEGOTIATION16Asiya Javayant
1040Leja CaldareraBrazil2026-04-11King, Christopher A Esq NEW58Anna Fali
1041Deepesh ChuiIndia2026-04-18Morlong Associates QUALIFIED9Asiya Javayant
1042Adams MorascaRussia2026-03-30Benton, John B Jr QUALIFIED23Ivan Magalhaes
1043Jennifer AmigonUnited Kingdom2026-04-17Benton, John B Jr QUALIFIED42Xuxue Feng
1044Julie StensethAustralia2026-04-10Benton, John B Jr NEW47Stephen Shaw
1045Sinclair WaycottBrazil2026-04-21Printing Dimensions RENEWAL86Amy Elsner
1046Juan WieserRussia2026-04-12Morlong Associates PROPOSAL26Bernardo Dominic
1047Izzy GarufiAustralia2026-04-22Truhlar And Truhlar Attys NEGOTIATION61Ioni Bowcher
1048Aruna FigeroaFrance2026-04-03Chapman, Ross E Esq QUALIFIED42Xuxue Feng
1049Antonio CaudyUnited Kingdom2026-04-19Feltz Printing Service NEGOTIATION48Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Jones VocelkaItalyElwin Sharvill PROPOSAL
Ivar PaprockiGermanyXuxue Feng UNQUALIFIED
David DarakjyIndiaStephen Shaw QUALIFIED
Kadeem FlosiSpainOnyama Limba NEW
Jefferson SchemmerIndiaOnyama Limba RENEWAL
Juan WieserItalyIoni Bowcher NEW
Adams MorascaUnited KingdomXuxue Feng NEW
Juan WieserJapanXuxue Feng QUALIFIED
Aditya KuskoIndiaIvan Magalhaes PROPOSAL
Mayumi KolmetzArgentinaElwin Sharvill NEW
David DarakjyIndiaElwin Sharvill NEW
Aika InouyeJapanElwin Sharvill RENEWAL
Deepesh ChuiUnited KingdomBernardo Dominic PROPOSAL
Darci PoquetteArgentinaIvan Magalhaes QUALIFIED
Ivar PaprockiIndiaBernardo Dominic PROPOSAL
Jennifer AmigonAustraliaAsiya Javayant QUALIFIED
Nicolas IturbideAustraliaAmy Elsner NEW
Ivar PaprockiJapanOnyama Limba NEGOTIATION
Chavez BriddickItalyIvan Magalhaes RENEWAL
Leon OldroydIndiaOnyama Limba PROPOSAL
Johnson SergiItalyAsiya Javayant NEW
Juan WieserAustraliaXuxue Feng UNQUALIFIED
Sinclair WaycottIndiaAmy Elsner PROPOSAL
Johnson SergiJapanIvan Magalhaes UNQUALIFIED
Francesco ShinkoItalyIvan Magalhaes PROPOSAL
Claire TollnerItalyIvan Magalhaes QUALIFIED
Jeanfrancois VenereGermanyAnna Fali UNQUALIFIED
Silvio SlusarskiBrazilStephen Shaw NEW
Deepesh ChuiUnited KingdomOnyama Limba UNQUALIFIED
Smith GlickRussiaIvan Magalhaes NEGOTIATION
Salvatore StockhamRussiaOnyama Limba NEGOTIATION
Ashley DoeGermanyIvan Magalhaes PROPOSAL
Morrow RutaArgentinaElwin Sharvill RENEWAL
Greenwood BologniaArgentinaAmy Elsner UNQUALIFIED
Morrow RutaAustraliaIoni Bowcher RENEWAL
Wickens NestleUnited KingdomAsiya Javayant RENEWAL
Jefferson SchemmerUnited KingdomBernardo Dominic NEGOTIATION
Octavia MaletFranceAmy Elsner NEGOTIATION
Arvin AlbaresRussiaElwin Sharvill NEW
Faith GillianGermanyXuxue Feng UNQUALIFIED
Nicolas IturbideBrazilStephen Shaw RENEWAL
Jefferson SchemmerBrazilAmy Elsner PROPOSAL
Aruna FigeroaUnited KingdomAsiya Javayant NEW
Jones VocelkaFranceBernardo Dominic PROPOSAL
Stacey MacleadFranceXuxue Feng NEW
Wickens NestleUnited KingdomXuxue Feng NEGOTIATION
Clifford RimArgentinaStephen Shaw PROPOSAL
Tony FollerCanadaElwin Sharvill NEW
Jeanfrancois VenereJapanAsiya Javayant QUALIFIED
Jennifer AmigonUnited KingdomIoni Bowcher NEW
Frozen Columns
Name
Alejandro Perin
Aika Inouye
Aruna Figeroa
Morrow Ruta
Sinclair Waycott
Aika Inouye
Arvin Albares
Jennifer Amigon
Emily Whobrey
Faith Gillian
Kadeem Flosi
Darci Poquette
Greenwood Bolognia
Nicolas Iturbide
Costa Dilliard
Juan Wieser
Kadeem Flosi
Munro Ferencz
Isabel Bowley
Wickens Nestle
Aruna Figeroa
Tony Foller
Costa Dilliard
Sinclair Waycott
Salvatore Stockham
Kaitlin Ostrosky
Alejandro Perin
Cody Saylors
Ricardo Gaucho
Julie Stenseth
Greenwood Bolognia
Clifford Rim
Johnson Sergi
Greenwood Bolognia
Silvio Slusarski
Adams Morasca
Maisha Rulapaugh
Alejandro Perin
Stacey Maclead
Salvatore Stockham
Jones Vocelka
Sinclair Waycott
James Butt
Adams Morasca
Kaitlin Ostrosky
Morrow Ruta
Silvio Slusarski
Smith Glick
Isabel Bowley
Maisha Rulapaugh
IdCountryDate
1000Australia2026-04-04
1001Australia2026-03-27
1002Brazil2026-04-17
1003United Kingdom2026-04-11
1004Argentina2026-03-29
1005Argentina2026-04-02
1006Spain2026-03-27
1007France2026-04-04
1008Spain2026-03-27
1009Brazil2026-04-10
1010India2026-04-18
1011Japan2026-04-13
1012Australia2026-04-11
1013Argentina2026-03-30
1014Japan2026-04-19
1015Australia2026-04-15
1016Japan2026-03-29
1017Australia2026-04-19
1018Australia2026-04-10
1019Germany2026-04-09
1020Russia2026-03-24
1021Argentina2026-04-07
1022Spain2026-04-16
1023United Kingdom2026-04-18
1024Spain2026-03-29
1025Japan2026-03-27
1026France2026-03-28
1027France2026-04-10
1028Italy2026-04-20
1029India2026-03-27
1030Australia2026-04-20
1031India2026-03-24
1032Japan2026-04-17
1033Australia2026-03-31
1034Spain2026-04-08
1035Italy2026-04-06
1036France2026-04-17
1037Canada2026-04-22
1038Italy2026-04-01
1039France2026-03-25
1040Canada2026-04-12
1041Brazil2026-04-03
1042United Kingdom2026-04-15
1043India2026-04-03
1044India2026-04-13
1045India2026-03-27
1046Australia2026-04-15
1047Brazil2026-04-15
1048France2026-03-28
1049Australia2026-04-13

On-Demand Data

NameIdCountryDate
Salvatore Stockham1000India2026-04-22
Johnson Sergi1001Spain2026-04-07
Antonio Caudy1002United Kingdom2026-03-27
Greenwood Bolognia1003United Kingdom2026-03-28
Ashley Doe1004Germany2026-04-12
Stacey Maclead1005Australia2026-04-20
Julie Stenseth1006Canada2026-03-28
Mujtaba Nicka1007Brazil2026-03-31
Arvin Albares1008Brazil2026-04-09
Juan Wieser1009Australia2026-03-25
Juan Wieser1010Brazil2026-03-31
Morrow Ruta1011France2026-04-04
Mujtaba Nicka1012Italy2026-04-03
Adams Morasca1013Australia2026-04-02
Darci Poquette1014Argentina2026-03-27
Stacey Maclead1015Canada2026-04-08
Mayumi Kolmetz1016Spain2026-03-27
Smith Glick1017Germany2026-04-19
Tony Foller1018Brazil2026-04-01
Juan Wieser1019Canada2026-03-27
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
James ButtItalyOnyama Limba UNQUALIFIED
Izzy GarufiArgentinaStephen Shaw NEW
Faith GillianCanadaIoni Bowcher RENEWAL
Deepesh ChuiGermanyIvan Magalhaes QUALIFIED
Mujtaba NickaGermanyIvan Magalhaes RENEWAL
Leon OldroydFranceXuxue Feng QUALIFIED
Smith GlickItalyIoni Bowcher UNQUALIFIED
Arvin AlbaresFranceElwin Sharvill NEGOTIATION
Jennifer AmigonSpainOnyama Limba PROPOSAL
Jennifer AmigonUnited KingdomAnna Fali NEW
Ricardo GauchoBrazilIvan Magalhaes NEW
Misaki RoysterArgentinaAmy Elsner QUALIFIED
Ricardo GauchoBrazilXuxue Feng PROPOSAL
Francesco ShinkoGermanyBernardo Dominic NEGOTIATION
Arvin AlbaresSpainOnyama Limba NEGOTIATION
Maisha RulapaughRussiaOnyama Limba NEGOTIATION
Jeanfrancois VenereCanadaElwin Sharvill NEW
Darci PoquetteRussiaIoni Bowcher NEW
James ButtUnited KingdomStephen Shaw QUALIFIED
Morrow RutaJapanOnyama Limba QUALIFIED
Ivar PaprockiUnited KingdomOnyama Limba UNQUALIFIED
Wickens NestleArgentinaIoni Bowcher RENEWAL
Ashley DoeJapanIoni Bowcher NEW
Costa DilliardBrazilOnyama Limba QUALIFIED
Octavia MaletJapanAnna Fali PROPOSAL
Wickens NestleFranceAmy Elsner NEGOTIATION
Aditya KuskoAustraliaAsiya Javayant NEW
Leja CaldareraSpainIoni Bowcher PROPOSAL
Mujtaba NickaSpainIoni Bowcher NEW
Stacey MacleadFranceIoni Bowcher UNQUALIFIED
Deepesh ChuiFranceElwin Sharvill NEW
Darci PoquetteAustraliaXuxue Feng NEGOTIATION
Maisha RulapaughGermanyIoni Bowcher UNQUALIFIED
Octavia MaletIndiaAsiya Javayant NEGOTIATION
Nicolas IturbideSpainElwin Sharvill NEW
Tony FollerBrazilXuxue Feng QUALIFIED
Kadeem FlosiItalyOnyama Limba PROPOSAL
Morrow RutaIndiaElwin Sharvill QUALIFIED
Isabel BowleyFranceOnyama Limba RENEWAL
Costa DilliardRussiaXuxue Feng UNQUALIFIED

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