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
Aditya KuskoCanadaXuxue Feng PROPOSAL
Misaki RoysterGermanyBernardo Dominic NEW
Aditya KuskoArgentinaXuxue Feng QUALIFIED
Kaitlin OstroskyIndiaOnyama Limba RENEWAL
Kaitlin OstroskyBrazilIvan Magalhaes RENEWAL
Costa DilliardArgentinaAnna Fali NEW
Sinclair WaycottFranceElwin Sharvill NEW
Mayumi KolmetzSpainAsiya Javayant NEW
Julie StensethGermanyXuxue Feng RENEWAL
Morrow RutaUnited KingdomElwin Sharvill RENEWAL
Maisha RulapaughGermanyBernardo Dominic NEGOTIATION
Jones VocelkaIndiaAmy Elsner UNQUALIFIED
Izzy GarufiCanadaStephen Shaw NEW
Aditya KuskoIndiaStephen Shaw NEGOTIATION
Sinclair WaycottAustraliaXuxue Feng QUALIFIED
Nicolas IturbideUnited KingdomElwin Sharvill UNQUALIFIED
Deepesh ChuiGermanyIvan Magalhaes UNQUALIFIED
Deepesh ChuiArgentinaBernardo Dominic PROPOSAL
Aruna FigeroaUnited KingdomElwin Sharvill PROPOSAL
Mujtaba NickaItalyIoni Bowcher UNQUALIFIED
Leon OldroydFranceStephen Shaw RENEWAL
Cody SaylorsBrazilElwin Sharvill PROPOSAL
Ivar PaprockiBrazilStephen Shaw UNQUALIFIED
David DarakjySpainElwin Sharvill PROPOSAL
Aruna FigeroaGermanyElwin Sharvill NEW
Wickens NestleIndiaAsiya Javayant PROPOSAL
Jones VocelkaIndiaElwin Sharvill NEGOTIATION
Alejandro PerinCanadaXuxue Feng PROPOSAL
Jeanfrancois VenereRussiaBernardo Dominic QUALIFIED
Morrow RutaItalyIvan Magalhaes NEW
Sinclair WaycottSpainAmy Elsner NEW
Leja CaldareraUnited KingdomIoni Bowcher UNQUALIFIED
Jones VocelkaJapanBernardo Dominic RENEWAL
Nicolas IturbideCanadaOnyama Limba QUALIFIED
Nicolas IturbideCanadaAnna Fali NEW
Mayumi KolmetzSpainIvan Magalhaes NEW
Alejandro PerinUnited KingdomAsiya Javayant QUALIFIED
Clifford RimFranceAsiya Javayant RENEWAL
Kadeem FlosiIndiaElwin Sharvill QUALIFIED
Mujtaba NickaUnited KingdomOnyama Limba NEW
Ashley DoeBrazilElwin Sharvill PROPOSAL
Adams MorascaFranceStephen Shaw QUALIFIED
Jennifer AmigonRussiaAnna Fali QUALIFIED
Maria MarrierArgentinaIvan Magalhaes UNQUALIFIED
Cody SaylorsSpainXuxue Feng QUALIFIED
Wickens NestleRussiaAnna Fali UNQUALIFIED
Clifford RimSpainAmy Elsner NEGOTIATION
Leja CaldareraAustraliaIvan Magalhaes NEW
Julie StensethCanadaElwin Sharvill UNQUALIFIED
Kaitlin OstroskyGermanyIvan Magalhaes NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Julie StensethFranceAsiya Javayant NEW
Munro FerenczCanadaBernardo Dominic RENEWAL
Mujtaba NickaItalyAmy Elsner RENEWAL
Cody SaylorsArgentinaAsiya Javayant UNQUALIFIED
Ivar PaprockiSpainOnyama Limba PROPOSAL
Smith GlickIndiaIvan Magalhaes RENEWAL
David DarakjyGermanyXuxue Feng PROPOSAL
Mayumi KolmetzAustraliaIvan Magalhaes NEW
Leja CaldareraCanadaElwin Sharvill RENEWAL
Salvatore StockhamBrazilAmy Elsner QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Tony FollerFrance2026-06-20Truhlar And Truhlar Attys UNQUALIFIED52Elwin Sharvill
1001Cody SaylorsFrance2026-05-27Printing Dimensions UNQUALIFIED97Ioni Bowcher
1002Misaki RoysterRussia2026-06-21Rangoni Of Florence NEW51Asiya Javayant
1003Emily WhobreyAustralia2026-06-13King, Christopher A Esq UNQUALIFIED92Elwin Sharvill
1004Alejandro PerinItaly2026-05-25Truhlar And Truhlar Attys NEGOTIATION56Ivan Magalhaes
1005Francesco ShinkoSpain2026-06-12Chemel, James L Cpa RENEWAL39Asiya Javayant
1006Cody SaylorsBrazil2026-06-08Buckley Miller Wright PROPOSAL81Anna Fali
1007Murillo MaletSpain2026-06-02Buckley Miller Wright RENEWAL71Amy Elsner
1008Maisha RulapaughJapan2026-05-31Benton, John B Jr UNQUALIFIED28Asiya Javayant
1009Adams MorascaAustralia2026-06-05Feiner Bros NEW44Ivan Magalhaes
1010Misaki RoysterBrazil2026-06-04Commercial Press QUALIFIED77Ioni Bowcher
1011Jefferson SchemmerJapan2026-06-12Chanay, Jeffrey A Esq NEW69Xuxue Feng
1012Juan WieserBrazil2026-05-31Commercial Press NEGOTIATION84Anna Fali
1013Julie StensethArgentina2026-05-28Truhlar And Truhlar Attys PROPOSAL83Stephen Shaw
1014Murillo MaletSpain2026-06-06Rangoni Of Florence UNQUALIFIED5Amy Elsner
1015Ivar PaprockiItaly2026-05-25Chanay, Jeffrey A Esq RENEWAL45Onyama Limba
1016Emily WhobreyUnited Kingdom2026-06-22Morlong Associates UNQUALIFIED96Stephen Shaw
1017Nicolas IturbideSpain2026-06-06Buckley Miller Wright RENEWAL58Onyama Limba
1018Smith GlickCanada2026-06-10Buckley Miller Wright RENEWAL77Ioni Bowcher
1019Misaki RoysterCanada2026-06-02Feiner Bros NEGOTIATION45Amy Elsner
1020Mayumi KolmetzItaly2026-06-02Chanay, Jeffrey A Esq NEGOTIATION98Onyama Limba
1021Alejandro PerinRussia2026-06-13Commercial Press NEW82Onyama Limba
1022Aditya KuskoSpain2026-06-01Benton, John B Jr UNQUALIFIED91Elwin Sharvill
1023Darci PoquetteJapan2026-06-07Chanay, Jeffrey A Esq NEGOTIATION37Stephen Shaw
1024James ButtSpain2026-06-09Truhlar And Truhlar Attys QUALIFIED32Bernardo Dominic
1025Rodrigues CampainItaly2026-05-27Commercial Press UNQUALIFIED8Ioni Bowcher
1026Ashley DoeRussia2026-06-22Feltz Printing Service NEW90Amy Elsner
1027Greenwood BologniaBrazil2026-06-18Dorl, James J Esq UNQUALIFIED43Stephen Shaw
1028Izzy GarufiCanada2026-06-11Chapman, Ross E Esq QUALIFIED41Bernardo Dominic
1029Mujtaba NickaAustralia2026-06-12King, Christopher A Esq UNQUALIFIED35Stephen Shaw
1030Maisha RulapaughItaly2026-06-07Dorl, James J Esq NEGOTIATION70Bernardo Dominic
1031Tony FollerArgentina2026-06-11Rangoni Of Florence NEW49Bernardo Dominic
1032Izzy GarufiItaly2026-05-28Buckley Miller Wright NEW29Bernardo Dominic
1033Octavia MaletUnited Kingdom2026-06-22Buckley Miller Wright NEW57Amy Elsner
1034Claire TollnerCanada2026-06-15Rangoni Of Florence NEGOTIATION26Bernardo Dominic
1035Emily WhobreyGermany2026-05-28Commercial Press RENEWAL9Ioni Bowcher
1036Misaki RoysterGermany2026-05-24Rousseaux, Michael Esq QUALIFIED43Elwin Sharvill
1037Sinclair WaycottArgentina2026-06-13Chemel, James L Cpa UNQUALIFIED48Asiya Javayant
1038Greenwood BologniaCanada2026-06-12Buckley Miller Wright QUALIFIED71Ivan Magalhaes
1039Jennifer AmigonJapan2026-06-20Commercial Press NEGOTIATION55Asiya Javayant
1040Murillo MaletIndia2026-06-19Buckley Miller Wright RENEWAL41Xuxue Feng
1041Isabel BowleySpain2026-06-02Benton, John B Jr QUALIFIED55Anna Fali
1042Murillo MaletJapan2026-06-08Feltz Printing Service UNQUALIFIED60Elwin Sharvill
1043Julie StensethSpain2026-05-27Buckley Miller Wright NEW61Bernardo Dominic
1044Clifford RimBrazil2026-06-19Dorl, James J Esq PROPOSAL71Onyama Limba
1045Clifford RimFrance2026-06-11King, Christopher A Esq NEGOTIATION58Ioni Bowcher
1046Leon OldroydFrance2026-05-29Chanay, Jeffrey A Esq NEGOTIATION0Anna Fali
1047Francesco ShinkoItaly2026-06-16Feltz Printing Service QUALIFIED34Asiya Javayant
1048Costa DilliardAustralia2026-06-12Commercial Press RENEWAL85Elwin Sharvill
1049Silvio SlusarskiArgentina2026-06-06Dorl, James J Esq QUALIFIED2Onyama Limba
Frozen Rows
NameCountryRepresentativeStatus
Adams MorascaBrazilElwin Sharvill QUALIFIED
Juan WieserFranceAmy Elsner PROPOSAL
Jeanfrancois VenereBrazilBernardo Dominic RENEWAL
Kaitlin OstroskyFranceXuxue Feng NEGOTIATION
Ashley DoeSpainXuxue Feng PROPOSAL
Rodrigues CampainArgentinaIoni Bowcher RENEWAL
Izzy GarufiIndiaOnyama Limba RENEWAL
Nicolas IturbideUnited KingdomXuxue Feng PROPOSAL
Aruna FigeroaRussiaOnyama Limba QUALIFIED
Munro FerenczGermanyOnyama Limba NEGOTIATION
Jones VocelkaRussiaStephen Shaw UNQUALIFIED
Alejandro PerinGermanyBernardo Dominic QUALIFIED
Murillo MaletGermanyOnyama Limba QUALIFIED
Octavia MaletIndiaAsiya Javayant UNQUALIFIED
Tony FollerBrazilAmy Elsner NEW
Nicolas IturbideFranceXuxue Feng NEW
James ButtAustraliaXuxue Feng PROPOSAL
Stacey MacleadFranceIvan Magalhaes PROPOSAL
Tony FollerSpainStephen Shaw QUALIFIED
Jones VocelkaItalyAnna Fali RENEWAL
Johnson SergiRussiaAmy Elsner NEW
Isabel BowleyFranceOnyama Limba PROPOSAL
Aditya KuskoJapanIvan Magalhaes UNQUALIFIED
Izzy GarufiUnited KingdomAnna Fali RENEWAL
Ashley DoeGermanyOnyama Limba PROPOSAL
Ivar PaprockiCanadaIoni Bowcher PROPOSAL
Aruna FigeroaJapanBernardo Dominic PROPOSAL
Ivar PaprockiArgentinaAmy Elsner RENEWAL
Chavez BriddickIndiaAsiya Javayant RENEWAL
Tony FollerArgentinaOnyama Limba NEGOTIATION
Aika InouyeCanadaIvan Magalhaes UNQUALIFIED
Maria MarrierArgentinaElwin Sharvill NEW
Tony FollerCanadaAnna Fali PROPOSAL
Emily WhobreyAustraliaAsiya Javayant NEGOTIATION
Mayumi KolmetzBrazilIvan Magalhaes UNQUALIFIED
Clifford RimSpainXuxue Feng UNQUALIFIED
Julie StensethGermanyIoni Bowcher UNQUALIFIED
Kadeem FlosiFranceIvan Magalhaes NEW
Morrow RutaJapanXuxue Feng QUALIFIED
David DarakjyBrazilXuxue Feng QUALIFIED
Nicolas IturbideSpainAnna Fali RENEWAL
Claire TollnerRussiaAmy Elsner PROPOSAL
Rodrigues CampainJapanIoni Bowcher NEGOTIATION
Wickens NestleUnited KingdomIvan Magalhaes NEW
Darci PoquetteCanadaIoni Bowcher NEGOTIATION
Claire TollnerGermanyIoni Bowcher NEGOTIATION
Aika InouyeCanadaIvan Magalhaes RENEWAL
Jeanfrancois VenereRussiaBernardo Dominic NEGOTIATION
Aditya KuskoUnited KingdomBernardo Dominic NEW
Wickens NestleRussiaXuxue Feng UNQUALIFIED
Frozen Columns
Name
Morrow Ruta
Munro Ferencz
Salvatore Stockham
Costa Dilliard
Munro Ferencz
Maria Marrier
Jones Vocelka
Leja Caldarera
Munro Ferencz
Rodrigues Campain
Antonio Caudy
Aruna Figeroa
Ashley Doe
Kaitlin Ostrosky
Maisha Rulapaugh
Jeanfrancois Venere
James Butt
Chavez Briddick
Stacey Maclead
Smith Glick
David Darakjy
Salvatore Stockham
Deepesh Chui
Deepesh Chui
Izzy Garufi
Izzy Garufi
Jennifer Amigon
Jefferson Schemmer
Stacey Maclead
Claire Tollner
Octavia Malet
Darci Poquette
Smith Glick
James Butt
Antonio Caudy
Leja Caldarera
Maisha Rulapaugh
Juan Wieser
Nicolas Iturbide
Julie Stenseth
Clifford Rim
Darci Poquette
Juan Wieser
Izzy Garufi
Emily Whobrey
Arvin Albares
Jennifer Amigon
Jennifer Amigon
Jennifer Amigon
Smith Glick
IdCountryDate
1000Italy2026-06-16
1001Argentina2026-06-20
1002Germany2026-06-19
1003Russia2026-06-16
1004France2026-05-26
1005Japan2026-06-22
1006Spain2026-06-04
1007Germany2026-05-26
1008Canada2026-06-09
1009Spain2026-06-14
1010Argentina2026-06-09
1011Argentina2026-06-10
1012France2026-06-17
1013United Kingdom2026-05-31
1014France2026-06-03
1015Japan2026-06-17
1016Brazil2026-06-07
1017India2026-06-11
1018Italy2026-06-07
1019Canada2026-06-04
1020United Kingdom2026-06-15
1021France2026-06-15
1022Germany2026-06-03
1023Canada2026-06-02
1024France2026-06-15
1025Spain2026-05-29
1026Russia2026-06-22
1027Brazil2026-06-12
1028Germany2026-06-08
1029France2026-06-06
1030United Kingdom2026-05-31
1031Spain2026-05-28
1032India2026-06-17
1033Russia2026-06-22
1034Germany2026-06-04
1035Canada2026-06-13
1036Italy2026-05-24
1037France2026-06-11
1038Australia2026-06-21
1039Canada2026-06-07
1040Japan2026-06-06
1041Italy2026-06-22
1042Australia2026-06-05
1043France2026-06-16
1044Spain2026-06-07
1045Argentina2026-06-01
1046Spain2026-05-29
1047Spain2026-06-16
1048France2026-05-28
1049Argentina2026-06-08

On-Demand Data

NameIdCountryDate
Adams Morasca1000France2026-06-19
Greenwood Bolognia1001Spain2026-06-15
Mujtaba Nicka1002Brazil2026-06-16
Chavez Briddick1003Canada2026-06-04
Juan Wieser1004France2026-06-15
Aika Inouye1005France2026-06-20
Munro Ferencz1006France2026-06-17
Darci Poquette1007Japan2026-05-25
Salvatore Stockham1008Brazil2026-06-07
Arvin Albares1009Brazil2026-06-08
David Darakjy1010Germany2026-06-18
Darci Poquette1011Brazil2026-05-31
Sinclair Waycott1012France2026-06-11
Tony Foller1013United Kingdom2026-06-01
Jeanfrancois Venere1014United Kingdom2026-06-22
Smith Glick1015Argentina2026-06-10
Costa Dilliard1016Japan2026-06-09
Greenwood Bolognia1017Spain2026-06-21
Octavia Malet1018Australia2026-05-24
Clifford Rim1019Australia2026-06-15
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Octavia MaletBrazilAsiya Javayant UNQUALIFIED
Jones VocelkaGermanyAsiya Javayant NEGOTIATION
Faith GillianIndiaIvan Magalhaes PROPOSAL
Aruna FigeroaCanadaXuxue Feng QUALIFIED
Wickens NestleItalyAsiya Javayant NEGOTIATION
David DarakjyBrazilXuxue Feng NEW
Aika InouyeFranceIvan Magalhaes RENEWAL
Ricardo GauchoRussiaIvan Magalhaes QUALIFIED
Leon OldroydIndiaAmy Elsner PROPOSAL
Silvio SlusarskiJapanIoni Bowcher RENEWAL
Tony FollerArgentinaIoni Bowcher PROPOSAL
Emily WhobreyBrazilAmy Elsner RENEWAL
Jeanfrancois VenereRussiaAnna Fali QUALIFIED
Alejandro PerinItalyStephen Shaw NEGOTIATION
Ashley DoeRussiaBernardo Dominic NEGOTIATION
Silvio SlusarskiRussiaOnyama Limba PROPOSAL
David DarakjyIndiaIvan Magalhaes RENEWAL
Misaki RoysterSpainOnyama Limba RENEWAL
Mujtaba NickaGermanyOnyama Limba PROPOSAL
Alejandro PerinFranceOnyama Limba NEGOTIATION
Julie StensethIndiaAsiya Javayant NEW
Tony FollerCanadaAmy Elsner RENEWAL
Ricardo GauchoIndiaAmy Elsner NEW
Alejandro PerinBrazilElwin Sharvill QUALIFIED
Jeanfrancois VenereRussiaAnna Fali QUALIFIED
Morrow RutaSpainAmy Elsner QUALIFIED
Aika InouyeArgentinaAnna Fali NEW
Murillo MaletArgentinaXuxue Feng RENEWAL
James ButtIndiaIvan Magalhaes NEW
Misaki RoysterFranceIoni Bowcher RENEWAL
Aika InouyeGermanyAmy Elsner UNQUALIFIED
Aruna FigeroaItalyAsiya Javayant RENEWAL
Aika InouyeBrazilXuxue Feng RENEWAL
Maisha RulapaughFranceAsiya Javayant NEW
Adams MorascaAustraliaBernardo Dominic QUALIFIED
Claire TollnerSpainXuxue Feng UNQUALIFIED
Silvio SlusarskiJapanAnna Fali QUALIFIED
Claire TollnerJapanOnyama Limba NEW
Silvio SlusarskiSpainAsiya Javayant QUALIFIED
Juan WieserBrazilElwin Sharvill 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>