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
Cody SaylorsItalyAsiya Javayant RENEWAL
Julie StensethCanadaIoni Bowcher QUALIFIED
Clifford RimRussiaAsiya Javayant RENEWAL
Jennifer AmigonUnited KingdomBernardo Dominic NEW
Clifford RimCanadaXuxue Feng NEGOTIATION
Julie StensethCanadaIoni Bowcher QUALIFIED
Arvin AlbaresItalyIvan Magalhaes UNQUALIFIED
Mujtaba NickaAustraliaIvan Magalhaes PROPOSAL
Smith GlickFranceAnna Fali NEGOTIATION
Claire TollnerCanadaElwin Sharvill NEW
Nicolas IturbideFranceXuxue Feng PROPOSAL
Chavez BriddickAustraliaOnyama Limba RENEWAL
Aditya KuskoJapanXuxue Feng NEGOTIATION
Rodrigues CampainJapanAnna Fali QUALIFIED
Ivar PaprockiRussiaAsiya Javayant RENEWAL
Aika InouyeRussiaAnna Fali QUALIFIED
Mujtaba NickaItalyAnna Fali QUALIFIED
Jefferson SchemmerBrazilBernardo Dominic NEGOTIATION
Greenwood BologniaItalyStephen Shaw UNQUALIFIED
Leja CaldareraBrazilIvan Magalhaes NEW
Mayumi KolmetzCanadaXuxue Feng PROPOSAL
Salvatore StockhamJapanAmy Elsner QUALIFIED
Wickens NestleFranceOnyama Limba QUALIFIED
David DarakjyArgentinaXuxue Feng QUALIFIED
Isabel BowleyItalyIoni Bowcher NEGOTIATION
Arvin AlbaresFranceXuxue Feng QUALIFIED
Murillo MaletGermanyXuxue Feng QUALIFIED
Rodrigues CampainArgentinaAmy Elsner RENEWAL
Aika InouyeCanadaStephen Shaw QUALIFIED
Ashley DoeRussiaElwin Sharvill NEGOTIATION
Maisha RulapaughJapanXuxue Feng UNQUALIFIED
Rodrigues CampainJapanStephen Shaw NEGOTIATION
Emily WhobreyIndiaBernardo Dominic PROPOSAL
Maria MarrierGermanyAmy Elsner QUALIFIED
Jones VocelkaJapanAnna Fali NEGOTIATION
James ButtGermanyBernardo Dominic NEW
Faith GillianRussiaIvan Magalhaes PROPOSAL
Kaitlin OstroskyAustraliaBernardo Dominic UNQUALIFIED
Arvin AlbaresFranceStephen Shaw RENEWAL
Aika InouyeUnited KingdomElwin Sharvill RENEWAL
Kaitlin OstroskyBrazilIoni Bowcher QUALIFIED
Kaitlin OstroskyBrazilBernardo Dominic NEGOTIATION
Chavez BriddickRussiaAmy Elsner NEGOTIATION
Rodrigues CampainArgentinaIoni Bowcher PROPOSAL
Kaitlin OstroskyBrazilIoni Bowcher NEGOTIATION
Aika InouyeItalyAmy Elsner UNQUALIFIED
Juan WieserItalyIvan Magalhaes NEW
Clifford RimCanadaIoni Bowcher NEGOTIATION
Silvio SlusarskiRussiaIvan Magalhaes UNQUALIFIED
Costa DilliardBrazilAmy Elsner QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Kadeem FlosiBrazilAnna Fali UNQUALIFIED
David DarakjySpainElwin Sharvill RENEWAL
Mayumi KolmetzAustraliaElwin Sharvill UNQUALIFIED
Kadeem FlosiIndiaIoni Bowcher RENEWAL
Aruna FigeroaGermanyBernardo Dominic NEGOTIATION
Leon OldroydUnited KingdomElwin Sharvill NEW
Misaki RoysterCanadaElwin Sharvill QUALIFIED
Juan WieserSpainBernardo Dominic QUALIFIED
Salvatore StockhamUnited KingdomElwin Sharvill NEW
Cody SaylorsIndiaElwin Sharvill UNQUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Costa DilliardItaly2026-03-26Rangoni Of Florence QUALIFIED18Ioni Bowcher
1001Octavia MaletAustralia2026-03-28Benton, John B Jr RENEWAL95Bernardo Dominic
1002Jones VocelkaArgentina2026-04-09Benton, John B Jr UNQUALIFIED75Ivan Magalhaes
1003Greenwood BologniaAustralia2026-03-27Feiner Bros QUALIFIED53Asiya Javayant
1004Smith GlickJapan2026-03-23Printing Dimensions PROPOSAL13Bernardo Dominic
1005Maria MarrierArgentina2026-04-11Chemel, James L Cpa NEW37Ivan Magalhaes
1006Aditya KuskoJapan2026-04-06Benton, John B Jr RENEWAL70Bernardo Dominic
1007Jennifer AmigonCanada2026-03-27Feltz Printing Service NEGOTIATION39Stephen Shaw
1008Sinclair WaycottAustralia2026-03-28Feltz Printing Service PROPOSAL18Xuxue Feng
1009Ashley DoeArgentina2026-03-27King, Christopher A Esq NEW69Amy Elsner
1010Jeanfrancois VenereIndia2026-04-10Morlong Associates PROPOSAL8Xuxue Feng
1011Aruna FigeroaCanada2026-03-22Feltz Printing Service QUALIFIED18Ivan Magalhaes
1012Ivar PaprockiArgentina2026-03-29Feiner Bros RENEWAL99Ivan Magalhaes
1013Francesco ShinkoSpain2026-04-02Feltz Printing Service NEW11Onyama Limba
1014Tony FollerArgentina2026-04-09Dorl, James J Esq RENEWAL88Xuxue Feng
1015Faith GillianGermany2026-03-31Buckley Miller Wright NEGOTIATION31Ioni Bowcher
1016Isabel BowleyItaly2026-03-30Commercial Press UNQUALIFIED56Elwin Sharvill
1017David DarakjySpain2026-04-06Chapman, Ross E Esq NEGOTIATION58Asiya Javayant
1018Salvatore StockhamFrance2026-04-15Benton, John B Jr PROPOSAL19Xuxue Feng
1019Morrow RutaFrance2026-03-22Morlong Associates NEW60Ioni Bowcher
1020Ricardo GauchoItaly2026-04-09Commercial Press QUALIFIED25Onyama Limba
1021Deepesh ChuiFrance2026-04-03Printing Dimensions RENEWAL90Asiya Javayant
1022Francesco ShinkoSpain2026-03-27Chemel, James L Cpa NEW42Stephen Shaw
1023Mujtaba NickaAustralia2026-04-13Feltz Printing Service UNQUALIFIED0Asiya Javayant
1024Wickens NestleIndia2026-03-25Morlong Associates RENEWAL45Onyama Limba
1025Maria MarrierJapan2026-04-02Commercial Press UNQUALIFIED35Xuxue Feng
1026Jefferson SchemmerItaly2026-04-08Chapman, Ross E Esq NEW94Ioni Bowcher
1027Cody SaylorsIndia2026-04-18Morlong Associates NEGOTIATION43Bernardo Dominic
1028Francesco ShinkoRussia2026-03-30King, Christopher A Esq RENEWAL92Anna Fali
1029Octavia MaletCanada2026-04-11Feltz Printing Service NEW19Ivan Magalhaes
1030Claire TollnerUnited Kingdom2026-03-29Printing Dimensions QUALIFIED98Asiya Javayant
1031Adams MorascaJapan2026-03-20Benton, John B Jr PROPOSAL30Amy Elsner
1032Ashley DoeFrance2026-04-10King, Christopher A Esq UNQUALIFIED78Xuxue Feng
1033Smith GlickBrazil2026-03-21Rousseaux, Michael Esq UNQUALIFIED48Ioni Bowcher
1034Maisha RulapaughAustralia2026-04-01Morlong Associates PROPOSAL51Asiya Javayant
1035Nicolas IturbideRussia2026-03-28Dorl, James J Esq PROPOSAL45Ioni Bowcher
1036Francesco ShinkoItaly2026-04-05Chapman, Ross E Esq NEW48Xuxue Feng
1037Ricardo GauchoCanada2026-04-06Rousseaux, Michael Esq RENEWAL2Stephen Shaw
1038Rodrigues CampainSpain2026-03-28Dorl, James J Esq RENEWAL29Xuxue Feng
1039James ButtCanada2026-03-23Printing Dimensions PROPOSAL77Xuxue Feng
1040Rodrigues CampainSpain2026-03-21Buckley Miller Wright PROPOSAL83Asiya Javayant
1041Cody SaylorsCanada2026-04-16Chemel, James L Cpa NEGOTIATION15Ioni Bowcher
1042Aruna FigeroaSpain2026-03-26Chanay, Jeffrey A Esq PROPOSAL80Xuxue Feng
1043Juan WieserItaly2026-03-20Commercial Press UNQUALIFIED58Asiya Javayant
1044Jeanfrancois VenereAustralia2026-03-31Feiner Bros RENEWAL47Ioni Bowcher
1045Smith GlickItaly2026-04-06Rousseaux, Michael Esq NEW52Ivan Magalhaes
1046Juan WieserSpain2026-03-28Rousseaux, Michael Esq NEGOTIATION19Amy Elsner
1047Octavia MaletCanada2026-04-06Printing Dimensions QUALIFIED58Anna Fali
1048Deepesh ChuiGermany2026-04-09Rousseaux, Michael Esq NEW95Anna Fali
1049Jefferson SchemmerArgentina2026-04-18Benton, John B Jr RENEWAL46Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Maisha RulapaughAustraliaBernardo Dominic NEGOTIATION
James ButtBrazilBernardo Dominic NEGOTIATION
Faith GillianCanadaAsiya Javayant PROPOSAL
Julie StensethIndiaIvan Magalhaes NEGOTIATION
Leja CaldareraSpainAsiya Javayant QUALIFIED
Silvio SlusarskiAustraliaElwin Sharvill PROPOSAL
Mayumi KolmetzBrazilIoni Bowcher RENEWAL
Octavia MaletJapanBernardo Dominic NEW
Ivar PaprockiJapanStephen Shaw QUALIFIED
Mujtaba NickaRussiaBernardo Dominic PROPOSAL
Jeanfrancois VenereItalyIoni Bowcher RENEWAL
Greenwood BologniaJapanOnyama Limba PROPOSAL
Wickens NestleArgentinaAmy Elsner QUALIFIED
Tony FollerRussiaStephen Shaw NEW
Faith GillianBrazilOnyama Limba NEGOTIATION
Kaitlin OstroskySpainAsiya Javayant RENEWAL
Octavia MaletRussiaAmy Elsner QUALIFIED
David DarakjyArgentinaIoni Bowcher UNQUALIFIED
Kadeem FlosiAustraliaIoni Bowcher QUALIFIED
Isabel BowleySpainBernardo Dominic NEW
Clifford RimIndiaAmy Elsner NEGOTIATION
Murillo MaletGermanyBernardo Dominic NEGOTIATION
Faith GillianGermanyAsiya Javayant RENEWAL
Sinclair WaycottItalyAmy Elsner RENEWAL
Ricardo GauchoUnited KingdomElwin Sharvill NEW
James ButtGermanyBernardo Dominic RENEWAL
Maria MarrierIndiaAmy Elsner RENEWAL
Munro FerenczItalyOnyama Limba NEGOTIATION
Sinclair WaycottIndiaAsiya Javayant UNQUALIFIED
Mayumi KolmetzBrazilBernardo Dominic QUALIFIED
Murillo MaletRussiaAsiya Javayant NEGOTIATION
Murillo MaletArgentinaAmy Elsner NEW
Stacey MacleadJapanIoni Bowcher UNQUALIFIED
Jeanfrancois VenereBrazilAsiya Javayant UNQUALIFIED
Munro FerenczAustraliaElwin Sharvill RENEWAL
Alejandro PerinBrazilIvan Magalhaes UNQUALIFIED
Jefferson SchemmerSpainAsiya Javayant PROPOSAL
Jeanfrancois VenereCanadaAnna Fali PROPOSAL
Leja CaldareraBrazilXuxue Feng UNQUALIFIED
Stacey MacleadBrazilStephen Shaw PROPOSAL
Kaitlin OstroskyItalyStephen Shaw PROPOSAL
Maria MarrierSpainAmy Elsner RENEWAL
Smith GlickRussiaAmy Elsner NEGOTIATION
Silvio SlusarskiAustraliaAmy Elsner PROPOSAL
Rodrigues CampainIndiaAmy Elsner RENEWAL
Costa DilliardGermanyElwin Sharvill NEGOTIATION
Aika InouyeBrazilElwin Sharvill QUALIFIED
Nicolas IturbideGermanyBernardo Dominic UNQUALIFIED
Adams MorascaArgentinaIvan Magalhaes RENEWAL
Aika InouyeRussiaAmy Elsner UNQUALIFIED
Frozen Columns
Name
Maria Marrier
Adams Morasca
Alejandro Perin
Johnson Sergi
Jennifer Amigon
Octavia Malet
Darci Poquette
Deepesh Chui
Izzy Garufi
Johnson Sergi
Nicolas Iturbide
Morrow Ruta
Murillo Malet
Leja Caldarera
Izzy Garufi
Francesco Shinko
Wickens Nestle
Cody Saylors
Kadeem Flosi
Jefferson Schemmer
Rodrigues Campain
Deepesh Chui
Julie Stenseth
Smith Glick
Stacey Maclead
Maria Marrier
Jefferson Schemmer
Maisha Rulapaugh
Leja Caldarera
Darci Poquette
Ivar Paprocki
Wickens Nestle
Rodrigues Campain
Isabel Bowley
Jefferson Schemmer
Kadeem Flosi
Claire Tollner
Emily Whobrey
Octavia Malet
Tony Foller
Jeanfrancois Venere
Ricardo Gaucho
Smith Glick
Johnson Sergi
Mayumi Kolmetz
Munro Ferencz
Claire Tollner
Clifford Rim
Aruna Figeroa
Julie Stenseth
IdCountryDate
1000Brazil2026-03-25
1001Argentina2026-03-31
1002Germany2026-04-16
1003Italy2026-04-01
1004Spain2026-04-11
1005Brazil2026-03-26
1006Russia2026-04-05
1007France2026-04-04
1008France2026-04-09
1009Russia2026-03-31
1010United Kingdom2026-04-14
1011Brazil2026-04-18
1012France2026-04-09
1013India2026-03-21
1014Russia2026-04-06
1015India2026-03-22
1016United Kingdom2026-03-21
1017Italy2026-03-25
1018Australia2026-04-16
1019Italy2026-03-31
1020Canada2026-04-06
1021Italy2026-03-29
1022Brazil2026-04-04
1023Italy2026-03-21
1024India2026-03-29
1025Japan2026-03-25
1026Argentina2026-04-01
1027Australia2026-03-27
1028United Kingdom2026-04-13
1029Australia2026-03-25
1030France2026-03-25
1031Canada2026-04-12
1032Argentina2026-04-01
1033Italy2026-03-25
1034Spain2026-03-24
1035Spain2026-04-06
1036Argentina2026-03-24
1037Brazil2026-04-05
1038Japan2026-04-06
1039Spain2026-03-25
1040Japan2026-04-16
1041United Kingdom2026-04-18
1042Canada2026-03-29
1043Brazil2026-03-28
1044France2026-04-10
1045Russia2026-04-14
1046Argentina2026-04-06
1047Japan2026-04-05
1048Argentina2026-04-12
1049Brazil2026-04-09

On-Demand Data

NameIdCountryDate
Juan Wieser1000Spain2026-03-20
Smith Glick1001United Kingdom2026-04-12
Rodrigues Campain1002Australia2026-04-12
Mayumi Kolmetz1003Australia2026-04-18
Kaitlin Ostrosky1004Argentina2026-04-04
Silvio Slusarski1005Brazil2026-04-13
Octavia Malet1006Russia2026-04-15
Maria Marrier1007Italy2026-04-11
Kaitlin Ostrosky1008United Kingdom2026-03-30
Sinclair Waycott1009Spain2026-03-28
Claire Tollner1010Germany2026-04-13
Smith Glick1011Argentina2026-03-21
Arvin Albares1012Spain2026-04-03
David Darakjy1013Canada2026-03-27
Darci Poquette1014Australia2026-04-10
Cody Saylors1015Canada2026-04-08
Stacey Maclead1016Japan2026-04-10
Aruna Figeroa1017Australia2026-04-07
Adams Morasca1018Australia2026-04-16
Misaki Royster1019United Kingdom2026-04-17
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Wickens NestleBrazilBernardo Dominic RENEWAL
Maria MarrierGermanyXuxue Feng UNQUALIFIED
Greenwood BologniaIndiaAsiya Javayant UNQUALIFIED
Maisha RulapaughItalyAsiya Javayant PROPOSAL
Munro FerenczAustraliaAmy Elsner PROPOSAL
Faith GillianJapanXuxue Feng RENEWAL
Deepesh ChuiItalyXuxue Feng PROPOSAL
Claire TollnerGermanyAmy Elsner QUALIFIED
Salvatore StockhamCanadaAmy Elsner RENEWAL
Julie StensethAustraliaBernardo Dominic RENEWAL
Chavez BriddickArgentinaElwin Sharvill QUALIFIED
Darci PoquetteFranceElwin Sharvill RENEWAL
Stacey MacleadGermanyAnna Fali NEGOTIATION
Alejandro PerinCanadaAsiya Javayant RENEWAL
Mujtaba NickaUnited KingdomXuxue Feng NEW
David DarakjyGermanyAnna Fali NEGOTIATION
Ivar PaprockiBrazilBernardo Dominic PROPOSAL
Maisha RulapaughJapanIoni Bowcher QUALIFIED
Johnson SergiGermanyIoni Bowcher QUALIFIED
Jennifer AmigonIndiaStephen Shaw UNQUALIFIED
Clifford RimGermanyAmy Elsner RENEWAL
Murillo MaletArgentinaAmy Elsner PROPOSAL
Jennifer AmigonGermanyAnna Fali RENEWAL
Mujtaba NickaSpainBernardo Dominic UNQUALIFIED
Jeanfrancois VenereRussiaElwin Sharvill NEW
Jeanfrancois VenereRussiaBernardo Dominic RENEWAL
Costa DilliardIndiaElwin Sharvill QUALIFIED
Izzy GarufiItalyBernardo Dominic NEGOTIATION
Aditya KuskoSpainXuxue Feng UNQUALIFIED
Deepesh ChuiJapanElwin Sharvill PROPOSAL
Johnson SergiJapanOnyama Limba UNQUALIFIED
Munro FerenczGermanyAmy Elsner NEW
Ricardo GauchoSpainAsiya Javayant RENEWAL
Maisha RulapaughBrazilIvan Magalhaes NEW
Ivar PaprockiItalyXuxue Feng UNQUALIFIED
Octavia MaletJapanIoni Bowcher NEGOTIATION
Johnson SergiUnited KingdomXuxue Feng UNQUALIFIED
Silvio SlusarskiGermanyOnyama Limba QUALIFIED
Murillo MaletFranceElwin Sharvill NEGOTIATION
Mayumi KolmetzAustraliaAmy Elsner PROPOSAL

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