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
Julie StensethSpainAmy Elsner NEW
Cody SaylorsSpainIoni Bowcher PROPOSAL
Maisha RulapaughCanadaAnna Fali NEGOTIATION
Munro FerenczIndiaOnyama Limba NEW
Kaitlin OstroskyArgentinaStephen Shaw RENEWAL
Aditya KuskoAustraliaIoni Bowcher RENEWAL
Francesco ShinkoUnited KingdomAsiya Javayant NEGOTIATION
Costa DilliardGermanyAsiya Javayant NEW
Costa DilliardIndiaStephen Shaw PROPOSAL
Aditya KuskoFranceXuxue Feng NEGOTIATION
James ButtBrazilAnna Fali QUALIFIED
Leon OldroydBrazilIvan Magalhaes NEGOTIATION
Smith GlickSpainXuxue Feng NEGOTIATION
Claire TollnerArgentinaStephen Shaw NEGOTIATION
Morrow RutaItalyIvan Magalhaes UNQUALIFIED
Leja CaldareraItalyXuxue Feng QUALIFIED
Wickens NestleGermanyElwin Sharvill NEGOTIATION
Aruna FigeroaJapanXuxue Feng NEW
Darci PoquetteArgentinaOnyama Limba NEGOTIATION
Deepesh ChuiFranceOnyama Limba PROPOSAL
Faith GillianAustraliaXuxue Feng RENEWAL
James ButtJapanXuxue Feng NEGOTIATION
Johnson SergiArgentinaOnyama Limba PROPOSAL
Francesco ShinkoAustraliaIoni Bowcher NEW
Sinclair WaycottJapanXuxue Feng PROPOSAL
Munro FerenczRussiaIoni Bowcher RENEWAL
Salvatore StockhamJapanIoni Bowcher NEW
Morrow RutaIndiaStephen Shaw UNQUALIFIED
Rodrigues CampainFranceBernardo Dominic RENEWAL
Smith GlickGermanyElwin Sharvill PROPOSAL
Maria MarrierFranceIvan Magalhaes QUALIFIED
Isabel BowleyCanadaAmy Elsner PROPOSAL
David DarakjyCanadaIoni Bowcher NEW
Aditya KuskoItalyIoni Bowcher QUALIFIED
Mujtaba NickaIndiaAmy Elsner QUALIFIED
Emily WhobreyBrazilElwin Sharvill PROPOSAL
Jeanfrancois VenereAustraliaXuxue Feng NEW
Chavez BriddickArgentinaAsiya Javayant QUALIFIED
Jeanfrancois VenereIndiaStephen Shaw RENEWAL
Emily WhobreyBrazilXuxue Feng PROPOSAL
Morrow RutaGermanyBernardo Dominic UNQUALIFIED
Aditya KuskoAustraliaAsiya Javayant UNQUALIFIED
Aditya KuskoRussiaOnyama Limba RENEWAL
Jones VocelkaIndiaOnyama Limba UNQUALIFIED
Arvin AlbaresFranceXuxue Feng NEW
Darci PoquetteCanadaIoni Bowcher RENEWAL
Stacey MacleadUnited KingdomIvan Magalhaes RENEWAL
Morrow RutaItalyIvan Magalhaes RENEWAL
Munro FerenczIndiaAmy Elsner RENEWAL
Aika InouyeAustraliaAmy Elsner NEGOTIATION
Horizontal
NameCountryRepresentativeStatus
Faith GillianGermanyIoni Bowcher RENEWAL
Sinclair WaycottArgentinaElwin Sharvill NEW
Wickens NestleFranceAmy Elsner UNQUALIFIED
Francesco ShinkoSpainXuxue Feng RENEWAL
Morrow RutaRussiaOnyama Limba QUALIFIED
Nicolas IturbideRussiaIoni Bowcher RENEWAL
Stacey MacleadSpainXuxue Feng RENEWAL
Faith GillianIndiaStephen Shaw RENEWAL
Cody SaylorsAustraliaStephen Shaw RENEWAL
Silvio SlusarskiSpainStephen Shaw UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Darci PoquetteFrance2026-05-25King, Christopher A Esq UNQUALIFIED18Stephen Shaw
1001Kadeem FlosiAustralia2026-06-09Rangoni Of Florence NEGOTIATION68Ioni Bowcher
1002Octavia MaletAustralia2026-06-04Chanay, Jeffrey A Esq UNQUALIFIED78Bernardo Dominic
1003Rodrigues CampainArgentina2026-06-11Feiner Bros QUALIFIED42Elwin Sharvill
1004Leja CaldareraUnited Kingdom2026-06-01Commercial Press PROPOSAL3Ivan Magalhaes
1005Kadeem FlosiArgentina2026-06-12Dorl, James J Esq RENEWAL8Stephen Shaw
1006Salvatore StockhamGermany2026-06-17Rousseaux, Michael Esq RENEWAL4Ioni Bowcher
1007Faith GillianGermany2026-05-31Commercial Press UNQUALIFIED44Xuxue Feng
1008Claire TollnerJapan2026-06-13Benton, John B Jr QUALIFIED52Asiya Javayant
1009Jones VocelkaItaly2026-06-08Benton, John B Jr UNQUALIFIED48Asiya Javayant
1010Deepesh ChuiArgentina2026-06-18Buckley Miller Wright NEW57Onyama Limba
1011Nicolas IturbideAustralia2026-06-08Truhlar And Truhlar Attys UNQUALIFIED82Xuxue Feng
1012Alejandro PerinFrance2026-06-10Chapman, Ross E Esq UNQUALIFIED80Ivan Magalhaes
1013Aruna FigeroaArgentina2026-06-07Benton, John B Jr NEW10Xuxue Feng
1014Silvio SlusarskiFrance2026-05-27Morlong Associates PROPOSAL60Ioni Bowcher
1015Sinclair WaycottRussia2026-06-10Rousseaux, Michael Esq RENEWAL38Xuxue Feng
1016Johnson SergiArgentina2026-05-27Printing Dimensions RENEWAL97Ioni Bowcher
1017Greenwood BologniaGermany2026-06-04Rangoni Of Florence RENEWAL97Asiya Javayant
1018Mujtaba NickaItaly2026-05-28Chanay, Jeffrey A Esq PROPOSAL40Xuxue Feng
1019Tony FollerJapan2026-06-19Truhlar And Truhlar Attys NEGOTIATION12Asiya Javayant
1020Leja CaldareraSpain2026-06-19Rangoni Of Florence RENEWAL59Anna Fali
1021Leon OldroydIndia2026-06-03Printing Dimensions UNQUALIFIED70Ioni Bowcher
1022Octavia MaletItaly2026-05-23Rangoni Of Florence NEW52Asiya Javayant
1023Faith GillianItaly2026-06-10Feiner Bros QUALIFIED73Elwin Sharvill
1024Emily WhobreyAustralia2026-06-19Dorl, James J Esq PROPOSAL0Ivan Magalhaes
1025Aruna FigeroaJapan2026-06-07Morlong Associates NEW39Asiya Javayant
1026Chavez BriddickItaly2026-05-29Dorl, James J Esq UNQUALIFIED17Xuxue Feng
1027Julie StensethCanada2026-06-02Chapman, Ross E Esq UNQUALIFIED23Ivan Magalhaes
1028Ricardo GauchoUnited Kingdom2026-06-09Printing Dimensions UNQUALIFIED78Asiya Javayant
1029Octavia MaletItaly2026-05-28Chapman, Ross E Esq NEW28Amy Elsner
1030Deepesh ChuiJapan2026-06-10Feiner Bros UNQUALIFIED29Stephen Shaw
1031Juan WieserAustralia2026-06-21Morlong Associates RENEWAL58Onyama Limba
1032Kadeem FlosiIndia2026-05-28Chanay, Jeffrey A Esq NEW84Anna Fali
1033Stacey MacleadItaly2026-05-29Commercial Press NEW16Asiya Javayant
1034David DarakjyArgentina2026-06-19Chapman, Ross E Esq NEW74Ivan Magalhaes
1035James ButtAustralia2026-06-21Chanay, Jeffrey A Esq NEW72Stephen Shaw
1036Leja CaldareraJapan2026-05-23Feltz Printing Service NEGOTIATION27Elwin Sharvill
1037Wickens NestleUnited Kingdom2026-06-04Benton, John B Jr NEGOTIATION63Anna Fali
1038Munro FerenczArgentina2026-06-01Chanay, Jeffrey A Esq NEW82Amy Elsner
1039Izzy GarufiFrance2026-06-08Morlong Associates RENEWAL20Asiya Javayant
1040Misaki RoysterBrazil2026-06-04Chanay, Jeffrey A Esq QUALIFIED32Ioni Bowcher
1041Ivar PaprockiItaly2026-06-12Benton, John B Jr RENEWAL24Amy Elsner
1042Alejandro PerinUnited Kingdom2026-06-13Rousseaux, Michael Esq UNQUALIFIED38Onyama Limba
1043Darci PoquetteItaly2026-06-19Benton, John B Jr RENEWAL73Bernardo Dominic
1044Johnson SergiRussia2026-06-09Rousseaux, Michael Esq UNQUALIFIED57Bernardo Dominic
1045Isabel BowleyBrazil2026-06-03King, Christopher A Esq RENEWAL99Anna Fali
1046Jennifer AmigonUnited Kingdom2026-06-15Commercial Press NEGOTIATION19Ioni Bowcher
1047Ashley DoeRussia2026-06-08Morlong Associates UNQUALIFIED59Anna Fali
1048Rodrigues CampainFrance2026-06-13Feltz Printing Service RENEWAL57Xuxue Feng
1049Jefferson SchemmerRussia2026-06-04Rousseaux, Michael Esq RENEWAL20Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Ashley DoeJapanIoni Bowcher PROPOSAL
Stacey MacleadSpainBernardo Dominic NEW
Deepesh ChuiAustraliaBernardo Dominic UNQUALIFIED
Arvin AlbaresFranceAnna Fali NEGOTIATION
Ivar PaprockiAustraliaOnyama Limba NEW
Ivar PaprockiSpainIvan Magalhaes PROPOSAL
Leja CaldareraArgentinaBernardo Dominic PROPOSAL
Octavia MaletBrazilAmy Elsner NEGOTIATION
Johnson SergiJapanAsiya Javayant NEGOTIATION
Julie StensethCanadaStephen Shaw NEGOTIATION
Wickens NestleCanadaAmy Elsner NEGOTIATION
Murillo MaletBrazilIvan Magalhaes PROPOSAL
Greenwood BologniaRussiaAnna Fali RENEWAL
Smith GlickJapanAnna Fali QUALIFIED
Leon OldroydSpainElwin Sharvill UNQUALIFIED
Adams MorascaFranceIvan Magalhaes NEGOTIATION
Sinclair WaycottFranceElwin Sharvill QUALIFIED
Maisha RulapaughIndiaElwin Sharvill QUALIFIED
Silvio SlusarskiAustraliaElwin Sharvill NEGOTIATION
Costa DilliardIndiaXuxue Feng NEGOTIATION
Mayumi KolmetzItalyAnna Fali PROPOSAL
Smith GlickIndiaElwin Sharvill NEW
Smith GlickSpainStephen Shaw RENEWAL
Aruna FigeroaItalyOnyama Limba QUALIFIED
Rodrigues CampainAustraliaIvan Magalhaes QUALIFIED
Leja CaldareraBrazilStephen Shaw UNQUALIFIED
Maisha RulapaughJapanIoni Bowcher NEW
Antonio CaudyIndiaStephen Shaw NEGOTIATION
Maria MarrierJapanIvan Magalhaes UNQUALIFIED
Johnson SergiGermanyIvan Magalhaes NEW
Aditya KuskoGermanyAnna Fali QUALIFIED
Wickens NestleSpainXuxue Feng UNQUALIFIED
Maria MarrierGermanyAnna Fali QUALIFIED
Antonio CaudyJapanIvan Magalhaes PROPOSAL
Ivar PaprockiSpainElwin Sharvill PROPOSAL
Silvio SlusarskiBrazilBernardo Dominic NEW
Mayumi KolmetzJapanAnna Fali QUALIFIED
Francesco ShinkoItalyIoni Bowcher NEW
Greenwood BologniaItalyStephen Shaw NEGOTIATION
Aruna FigeroaFranceXuxue Feng QUALIFIED
Arvin AlbaresGermanyAnna Fali UNQUALIFIED
Salvatore StockhamItalyXuxue Feng NEW
Alejandro PerinAustraliaIvan Magalhaes QUALIFIED
James ButtCanadaIvan Magalhaes PROPOSAL
Chavez BriddickFranceIvan Magalhaes QUALIFIED
Stacey MacleadJapanIvan Magalhaes PROPOSAL
Greenwood BologniaRussiaElwin Sharvill RENEWAL
Isabel BowleyBrazilXuxue Feng PROPOSAL
Leon OldroydUnited KingdomOnyama Limba PROPOSAL
Clifford RimJapanIvan Magalhaes UNQUALIFIED
Frozen Columns
Name
Leja Caldarera
Maria Marrier
Darci Poquette
Clifford Rim
Mayumi Kolmetz
Mayumi Kolmetz
Aruna Figeroa
Ashley Doe
Ashley Doe
Leja Caldarera
James Butt
Greenwood Bolognia
Isabel Bowley
Julie Stenseth
Izzy Garufi
Julie Stenseth
Izzy Garufi
Rodrigues Campain
Maisha Rulapaugh
Leon Oldroyd
Salvatore Stockham
Rodrigues Campain
Nicolas Iturbide
Maisha Rulapaugh
Munro Ferencz
Claire Tollner
David Darakjy
Murillo Malet
Aika Inouye
Alejandro Perin
Faith Gillian
Mujtaba Nicka
Misaki Royster
Mayumi Kolmetz
Jennifer Amigon
Cody Saylors
Kadeem Flosi
Faith Gillian
Silvio Slusarski
Emily Whobrey
Misaki Royster
Claire Tollner
Kaitlin Ostrosky
Salvatore Stockham
Chavez Briddick
Francesco Shinko
Kadeem Flosi
Aditya Kusko
Stacey Maclead
Jefferson Schemmer
IdCountryDate
1000Spain2026-06-10
1001Germany2026-06-02
1002Germany2026-05-25
1003Spain2026-06-17
1004Spain2026-06-20
1005Italy2026-06-03
1006Canada2026-06-07
1007India2026-06-07
1008Canada2026-05-29
1009France2026-06-10
1010Australia2026-06-05
1011Germany2026-05-29
1012India2026-06-14
1013Spain2026-05-24
1014United Kingdom2026-05-26
1015Germany2026-06-08
1016United Kingdom2026-06-09
1017France2026-06-06
1018Brazil2026-06-04
1019Brazil2026-06-03
1020India2026-06-13
1021Canada2026-06-05
1022Germany2026-06-12
1023France2026-06-21
1024Argentina2026-05-31
1025Italy2026-05-27
1026India2026-06-13
1027Argentina2026-06-08
1028Russia2026-06-05
1029Spain2026-06-05
1030Italy2026-06-13
1031Russia2026-06-10
1032Argentina2026-06-05
1033France2026-06-02
1034Japan2026-06-16
1035France2026-06-18
1036Argentina2026-06-06
1037Spain2026-05-31
1038Japan2026-06-19
1039Japan2026-06-06
1040Argentina2026-05-27
1041Canada2026-06-09
1042France2026-06-21
1043Argentina2026-06-10
1044Brazil2026-05-26
1045Japan2026-06-03
1046France2026-06-05
1047Italy2026-05-25
1048India2026-06-09
1049Germany2026-06-06

On-Demand Data

NameIdCountryDate
Faith Gillian1000Japan2026-05-29
Stacey Maclead1001Russia2026-05-23
Emily Whobrey1002France2026-05-27
Antonio Caudy1003India2026-06-07
Cody Saylors1004Spain2026-05-25
Octavia Malet1005Argentina2026-06-20
Tony Foller1006Canada2026-06-08
Alejandro Perin1007Germany2026-06-09
Arvin Albares1008Italy2026-06-02
Maria Marrier1009Japan2026-05-31
Sinclair Waycott1010France2026-06-05
Antonio Caudy1011Germany2026-06-19
Julie Stenseth1012Italy2026-06-11
Murillo Malet1013Argentina2026-06-10
Munro Ferencz1014United Kingdom2026-06-08
Leja Caldarera1015Japan2026-06-15
Darci Poquette1016India2026-05-31
Maisha Rulapaugh1017France2026-05-27
Izzy Garufi1018Italy2026-06-04
Leon Oldroyd1019Brazil2026-06-06
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Faith GillianRussiaElwin Sharvill NEGOTIATION
Costa DilliardIndiaBernardo Dominic QUALIFIED
Leja CaldareraItalyElwin Sharvill QUALIFIED
Clifford RimUnited KingdomAnna Fali RENEWAL
Jones VocelkaAustraliaBernardo Dominic PROPOSAL
James ButtUnited KingdomStephen Shaw NEW
Ricardo GauchoGermanyOnyama Limba QUALIFIED
Morrow RutaCanadaOnyama Limba RENEWAL
Leon OldroydFranceAnna Fali PROPOSAL
Claire TollnerGermanyElwin Sharvill PROPOSAL
Rodrigues CampainCanadaAmy Elsner NEGOTIATION
Chavez BriddickUnited KingdomIvan Magalhaes QUALIFIED
David DarakjyAustraliaIoni Bowcher QUALIFIED
Isabel BowleySpainOnyama Limba RENEWAL
Jones VocelkaRussiaIvan Magalhaes NEW
Maisha RulapaughBrazilIoni Bowcher NEW
Mujtaba NickaRussiaAmy Elsner NEW
Alejandro PerinIndiaElwin Sharvill QUALIFIED
Misaki RoysterSpainXuxue Feng RENEWAL
Murillo MaletIndiaStephen Shaw UNQUALIFIED
James ButtJapanBernardo Dominic RENEWAL
Aruna FigeroaFranceXuxue Feng RENEWAL
Julie StensethIndiaElwin Sharvill RENEWAL
Clifford RimBrazilAsiya Javayant QUALIFIED
Wickens NestleFranceStephen Shaw QUALIFIED
Mujtaba NickaIndiaAnna Fali RENEWAL
Emily WhobreyIndiaOnyama Limba UNQUALIFIED
Clifford RimUnited KingdomStephen Shaw NEW
Aika InouyeCanadaXuxue Feng PROPOSAL
Alejandro PerinGermanyAnna Fali PROPOSAL
Mayumi KolmetzJapanBernardo Dominic NEGOTIATION
Izzy GarufiArgentinaOnyama Limba RENEWAL
Smith GlickRussiaStephen Shaw UNQUALIFIED
Jones VocelkaRussiaAnna Fali QUALIFIED
Mayumi KolmetzCanadaIoni Bowcher RENEWAL
Silvio SlusarskiCanadaOnyama Limba NEW
Mayumi KolmetzItalyBernardo Dominic QUALIFIED
Smith GlickIndiaBernardo Dominic NEGOTIATION
Juan WieserSpainAnna Fali RENEWAL
James ButtFranceXuxue Feng 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>