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
Jeanfrancois VenereIndiaBernardo Dominic UNQUALIFIED
Emily WhobreyItalyAmy Elsner PROPOSAL
Cody SaylorsFranceOnyama Limba UNQUALIFIED
Faith GillianAustraliaOnyama Limba QUALIFIED
Adams MorascaAustraliaAsiya Javayant NEGOTIATION
Leon OldroydSpainAnna Fali RENEWAL
Wickens NestleItalyIoni Bowcher RENEWAL
Francesco ShinkoUnited KingdomXuxue Feng NEW
Maisha RulapaughIndiaXuxue Feng UNQUALIFIED
Alejandro PerinFranceAsiya Javayant RENEWAL
Ricardo GauchoBrazilBernardo Dominic NEGOTIATION
Adams MorascaFranceAnna Fali NEW
Greenwood BologniaCanadaAsiya Javayant UNQUALIFIED
Rodrigues CampainArgentinaOnyama Limba NEGOTIATION
Johnson SergiCanadaIvan Magalhaes PROPOSAL
Mujtaba NickaCanadaStephen Shaw NEW
Morrow RutaAustraliaIvan Magalhaes RENEWAL
Jefferson SchemmerUnited KingdomAnna Fali QUALIFIED
Mujtaba NickaFranceIvan Magalhaes PROPOSAL
Morrow RutaRussiaIvan Magalhaes PROPOSAL
Alejandro PerinAustraliaStephen Shaw QUALIFIED
Chavez BriddickRussiaStephen Shaw PROPOSAL
Leja CaldareraGermanyElwin Sharvill RENEWAL
Leja CaldareraBrazilBernardo Dominic QUALIFIED
Arvin AlbaresFranceElwin Sharvill NEGOTIATION
Faith GillianRussiaIoni Bowcher NEW
Jefferson SchemmerGermanyIoni Bowcher NEW
Juan WieserUnited KingdomOnyama Limba RENEWAL
Jennifer AmigonArgentinaStephen Shaw RENEWAL
Salvatore StockhamGermanyIoni Bowcher QUALIFIED
Francesco ShinkoSpainStephen Shaw NEW
Claire TollnerSpainElwin Sharvill QUALIFIED
Aditya KuskoIndiaOnyama Limba RENEWAL
Francesco ShinkoRussiaIvan Magalhaes QUALIFIED
Ivar PaprockiSpainBernardo Dominic UNQUALIFIED
Greenwood BologniaArgentinaXuxue Feng NEW
Jeanfrancois VenereUnited KingdomAnna Fali NEW
Leja CaldareraArgentinaBernardo Dominic NEW
Leja CaldareraItalyElwin Sharvill NEW
Aditya KuskoFranceIoni Bowcher PROPOSAL
Chavez BriddickItalyXuxue Feng UNQUALIFIED
Smith GlickSpainXuxue Feng NEGOTIATION
Juan WieserSpainXuxue Feng RENEWAL
Jeanfrancois VenereBrazilAnna Fali RENEWAL
Aruna FigeroaUnited KingdomOnyama Limba QUALIFIED
Costa DilliardIndiaAmy Elsner RENEWAL
Cody SaylorsRussiaXuxue Feng RENEWAL
Salvatore StockhamArgentinaStephen Shaw NEW
Claire TollnerFranceXuxue Feng NEGOTIATION
Salvatore StockhamGermanyElwin Sharvill UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Aruna FigeroaGermanyStephen Shaw NEW
Ricardo GauchoRussiaIoni Bowcher QUALIFIED
Jennifer AmigonItalyStephen Shaw NEGOTIATION
Aruna FigeroaArgentinaAmy Elsner PROPOSAL
Faith GillianAustraliaStephen Shaw PROPOSAL
Silvio SlusarskiJapanIvan Magalhaes QUALIFIED
Misaki RoysterJapanElwin Sharvill QUALIFIED
Smith GlickCanadaOnyama Limba QUALIFIED
Salvatore StockhamBrazilAmy Elsner PROPOSAL
Juan WieserAustraliaElwin Sharvill QUALIFIED
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Stacey MacleadSpain2025-07-25Truhlar And Truhlar Attys QUALIFIED14Onyama Limba
1001Johnson SergiJapan2025-07-18Rousseaux, Michael Esq NEGOTIATION87Asiya Javayant
1002Faith GillianBrazil2025-08-08Rangoni Of Florence UNQUALIFIED80Stephen Shaw
1003Ivar PaprockiFrance2025-08-13Printing Dimensions QUALIFIED78Elwin Sharvill
1004Sinclair WaycottGermany2025-08-04Printing Dimensions PROPOSAL15Amy Elsner
1005Morrow RutaRussia2025-07-30Rousseaux, Michael Esq NEGOTIATION61Anna Fali
1006Mayumi KolmetzItaly2025-07-16Truhlar And Truhlar Attys NEW54Elwin Sharvill
1007Tony FollerItaly2025-08-12Chemel, James L Cpa UNQUALIFIED89Elwin Sharvill
1008Maisha RulapaughFrance2025-08-02Rangoni Of Florence PROPOSAL28Ioni Bowcher
1009Adams MorascaArgentina2025-07-25Rangoni Of Florence QUALIFIED13Bernardo Dominic
1010Silvio SlusarskiArgentina2025-07-27Feiner Bros UNQUALIFIED93Stephen Shaw
1011Sinclair WaycottItaly2025-08-09Chanay, Jeffrey A Esq NEGOTIATION50Ivan Magalhaes
1012Morrow RutaJapan2025-07-30Rousseaux, Michael Esq NEGOTIATION84Elwin Sharvill
1013Mujtaba NickaArgentina2025-07-28Truhlar And Truhlar Attys QUALIFIED12Ivan Magalhaes
1014Jones VocelkaArgentina2025-07-18Printing Dimensions NEGOTIATION33Asiya Javayant
1015Aika InouyeRussia2025-07-15Morlong Associates NEGOTIATION67Anna Fali
1016Mayumi KolmetzAustralia2025-08-01King, Christopher A Esq QUALIFIED53Anna Fali
1017Rodrigues CampainFrance2025-07-29Chemel, James L Cpa RENEWAL65Amy Elsner
1018Mayumi KolmetzGermany2025-07-24Morlong Associates NEGOTIATION95Bernardo Dominic
1019Juan WieserSpain2025-07-29Truhlar And Truhlar Attys UNQUALIFIED79Ioni Bowcher
1020Juan WieserAustralia2025-07-29King, Christopher A Esq NEW63Ivan Magalhaes
1021Adams MorascaIndia2025-07-25Benton, John B Jr NEGOTIATION44Onyama Limba
1022Francesco ShinkoRussia2025-08-09Feltz Printing Service QUALIFIED54Bernardo Dominic
1023Ashley DoeBrazil2025-07-24Chemel, James L Cpa RENEWAL73Onyama Limba
1024Adams MorascaUnited Kingdom2025-07-24Chapman, Ross E Esq NEW7Stephen Shaw
1025Jennifer AmigonAustralia2025-07-23Feiner Bros QUALIFIED67Bernardo Dominic
1026Costa DilliardArgentina2025-07-28Feltz Printing Service QUALIFIED77Xuxue Feng
1027Clifford RimSpain2025-08-04Printing Dimensions PROPOSAL71Anna Fali
1028Munro FerenczJapan2025-08-09Morlong Associates PROPOSAL3Bernardo Dominic
1029Mujtaba NickaFrance2025-07-19Dorl, James J Esq UNQUALIFIED27Bernardo Dominic
1030Ricardo GauchoArgentina2025-07-28Dorl, James J Esq UNQUALIFIED20Bernardo Dominic
1031Costa DilliardRussia2025-07-28Rangoni Of Florence UNQUALIFIED42Bernardo Dominic
1032Jones VocelkaJapan2025-07-22Benton, John B Jr NEW96Xuxue Feng
1033Munro FerenczIndia2025-08-07Chanay, Jeffrey A Esq RENEWAL40Elwin Sharvill
1034Clifford RimGermany2025-08-08Benton, John B Jr PROPOSAL16Ivan Magalhaes
1035Ivar PaprockiFrance2025-08-05Benton, John B Jr NEW90Xuxue Feng
1036Greenwood BologniaUnited Kingdom2025-08-01Truhlar And Truhlar Attys QUALIFIED58Stephen Shaw
1037Chavez BriddickSpain2025-07-30Commercial Press QUALIFIED4Amy Elsner
1038Cody SaylorsRussia2025-07-22Feltz Printing Service RENEWAL78Anna Fali
1039Darci PoquetteItaly2025-07-24Chapman, Ross E Esq NEW52Amy Elsner
1040Maria MarrierAustralia2025-07-16Chapman, Ross E Esq QUALIFIED91Ioni Bowcher
1041Mayumi KolmetzJapan2025-08-12Printing Dimensions NEGOTIATION35Amy Elsner
1042Costa DilliardBrazil2025-07-21Rousseaux, Michael Esq NEGOTIATION98Ivan Magalhaes
1043Murillo MaletUnited Kingdom2025-08-11Commercial Press PROPOSAL91Amy Elsner
1044Izzy GarufiCanada2025-07-30Printing Dimensions PROPOSAL36Bernardo Dominic
1045Kaitlin OstroskyRussia2025-07-18Feltz Printing Service QUALIFIED30Elwin Sharvill
1046Silvio SlusarskiGermany2025-08-02Chapman, Ross E Esq QUALIFIED53Bernardo Dominic
1047Sinclair WaycottRussia2025-07-20Rangoni Of Florence QUALIFIED45Asiya Javayant
1048Mujtaba NickaIndia2025-07-16Commercial Press RENEWAL83Anna Fali
1049Mayumi KolmetzGermany2025-08-11Truhlar And Truhlar Attys QUALIFIED55Ioni Bowcher
Frozen Rows
NameCountryRepresentativeStatus
Munro FerenczItalyIvan Magalhaes UNQUALIFIED
Leja CaldareraItalyBernardo Dominic RENEWAL
Aika InouyeAustraliaBernardo Dominic NEGOTIATION
Isabel BowleyIndiaStephen Shaw NEGOTIATION
Aika InouyeArgentinaBernardo Dominic RENEWAL
Aditya KuskoArgentinaAsiya Javayant RENEWAL
Emily WhobreyItalyBernardo Dominic QUALIFIED
Cody SaylorsBrazilAmy Elsner RENEWAL
Arvin AlbaresGermanyAmy Elsner RENEWAL
Stacey MacleadIndiaAmy Elsner QUALIFIED
Kaitlin OstroskyArgentinaElwin Sharvill RENEWAL
Juan WieserArgentinaAmy Elsner NEGOTIATION
Smith GlickJapanIoni Bowcher NEW
Kaitlin OstroskyRussiaAnna Fali NEW
Julie StensethBrazilBernardo Dominic PROPOSAL
Nicolas IturbideArgentinaBernardo Dominic RENEWAL
Claire TollnerGermanyAnna Fali QUALIFIED
Jefferson SchemmerAustraliaIvan Magalhaes QUALIFIED
Cody SaylorsJapanIvan Magalhaes NEW
Arvin AlbaresCanadaStephen Shaw PROPOSAL
Costa DilliardGermanyAsiya Javayant NEW
Jeanfrancois VenereRussiaXuxue Feng RENEWAL
Greenwood BologniaIndiaStephen Shaw UNQUALIFIED
Jones VocelkaCanadaAmy Elsner QUALIFIED
Juan WieserIndiaAnna Fali QUALIFIED
Emily WhobreyRussiaOnyama Limba RENEWAL
Arvin AlbaresCanadaOnyama Limba QUALIFIED
Costa DilliardJapanOnyama Limba QUALIFIED
Izzy GarufiFranceAmy Elsner NEGOTIATION
Nicolas IturbideBrazilAnna Fali NEGOTIATION
Faith GillianGermanyOnyama Limba NEW
Sinclair WaycottSpainAmy Elsner RENEWAL
Kadeem FlosiCanadaAmy Elsner RENEWAL
Jeanfrancois VenereRussiaAmy Elsner NEW
Jeanfrancois VenereBrazilXuxue Feng UNQUALIFIED
Octavia MaletBrazilBernardo Dominic UNQUALIFIED
Leon OldroydIndiaBernardo Dominic UNQUALIFIED
Salvatore StockhamGermanyAsiya Javayant NEW
Clifford RimItalyBernardo Dominic UNQUALIFIED
Munro FerenczFranceOnyama Limba NEW
Salvatore StockhamCanadaElwin Sharvill NEGOTIATION
Morrow RutaFranceIoni Bowcher UNQUALIFIED
Mayumi KolmetzCanadaIvan Magalhaes QUALIFIED
Aruna FigeroaIndiaStephen Shaw PROPOSAL
Wickens NestleSpainAnna Fali PROPOSAL
Sinclair WaycottRussiaAnna Fali PROPOSAL
Stacey MacleadArgentinaElwin Sharvill RENEWAL
Misaki RoysterCanadaIvan Magalhaes UNQUALIFIED
Smith GlickGermanyOnyama Limba UNQUALIFIED
Wickens NestleFranceOnyama Limba RENEWAL
Frozen Columns
Name
Leja Caldarera
Claire Tollner
David Darakjy
Clifford Rim
Antonio Caudy
Ivar Paprocki
Adams Morasca
Wickens Nestle
Ricardo Gaucho
Mayumi Kolmetz
Johnson Sergi
Greenwood Bolognia
James Butt
Wickens Nestle
Adams Morasca
Emily Whobrey
Tony Foller
Murillo Malet
Maisha Rulapaugh
Cody Saylors
Izzy Garufi
Salvatore Stockham
Tony Foller
Maria Marrier
Isabel Bowley
Chavez Briddick
Greenwood Bolognia
Francesco Shinko
Ivar Paprocki
Maria Marrier
Clifford Rim
Maisha Rulapaugh
Silvio Slusarski
Adams Morasca
Stacey Maclead
Arvin Albares
Murillo Malet
Maisha Rulapaugh
Smith Glick
Leon Oldroyd
James Butt
Misaki Royster
Rodrigues Campain
Costa Dilliard
Deepesh Chui
Sinclair Waycott
Faith Gillian
Kaitlin Ostrosky
Aika Inouye
Sinclair Waycott
IdCountryDate
1000Canada2025-07-19
1001Argentina2025-07-18
1002Germany2025-08-06
1003Japan2025-08-05
1004United Kingdom2025-07-18
1005Australia2025-08-01
1006Japan2025-07-30
1007Brazil2025-08-08
1008Canada2025-07-23
1009Argentina2025-07-16
1010France2025-07-30
1011France2025-07-26
1012Brazil2025-08-02
1013Russia2025-08-05
1014United Kingdom2025-07-27
1015Japan2025-08-08
1016Canada2025-08-01
1017Australia2025-07-24
1018Argentina2025-07-21
1019Germany2025-08-02
1020India2025-08-08
1021India2025-07-22
1022United Kingdom2025-08-12
1023Argentina2025-08-13
1024Australia2025-08-03
1025Russia2025-07-31
1026Canada2025-07-23
1027Japan2025-07-17
1028Brazil2025-07-22
1029India2025-07-19
1030India2025-08-12
1031Germany2025-08-12
1032Brazil2025-07-16
1033Canada2025-07-18
1034United Kingdom2025-08-01
1035Italy2025-07-22
1036Italy2025-07-23
1037Australia2025-08-09
1038Japan2025-08-02
1039France2025-07-28
1040France2025-07-15
1041Canada2025-07-29
1042Argentina2025-08-06
1043United Kingdom2025-08-07
1044India2025-07-20
1045United Kingdom2025-08-08
1046India2025-08-05
1047Italy2025-07-20
1048Russia2025-08-04
1049Spain2025-07-29

On-Demand Data

NameIdCountryDate
Alejandro Perin1000Brazil2025-07-28
Sinclair Waycott1001Argentina2025-08-04
Emily Whobrey1002Spain2025-07-19
Mujtaba Nicka1003Spain2025-07-16
Leon Oldroyd1004Japan2025-07-28
Aditya Kusko1005Japan2025-07-19
Munro Ferencz1006Australia2025-07-24
Maria Marrier1007Spain2025-07-27
Costa Dilliard1008Spain2025-07-19
Aruna Figeroa1009United Kingdom2025-07-25
Sinclair Waycott1010Italy2025-08-12
Adams Morasca1011Spain2025-08-12
Jefferson Schemmer1012France2025-08-07
Mujtaba Nicka1013Australia2025-08-09
Jones Vocelka1014Germany2025-07-21
Arvin Albares1015Russia2025-07-23
Munro Ferencz1016Canada2025-07-16
Francesco Shinko1017Japan2025-07-21
Chavez Briddick1018United Kingdom2025-08-12
Maria Marrier1019Canada2025-08-04
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Stacey MacleadItalyAnna Fali PROPOSAL
Stacey MacleadSpainAmy Elsner PROPOSAL
Smith GlickCanadaAmy Elsner NEGOTIATION
Octavia MaletArgentinaOnyama Limba PROPOSAL
Murillo MaletFranceXuxue Feng NEW
Antonio CaudyIndiaIvan Magalhaes RENEWAL
Silvio SlusarskiAustraliaAmy Elsner NEGOTIATION
Alejandro PerinRussiaOnyama Limba RENEWAL
Deepesh ChuiBrazilBernardo Dominic PROPOSAL
Nicolas IturbideBrazilAmy Elsner NEW
Jeanfrancois VenereBrazilStephen Shaw UNQUALIFIED
Julie StensethIndiaIvan Magalhaes QUALIFIED
Wickens NestleAustraliaAmy Elsner UNQUALIFIED
Cody SaylorsArgentinaOnyama Limba QUALIFIED
Salvatore StockhamRussiaXuxue Feng NEGOTIATION
Rodrigues CampainJapanAnna Fali QUALIFIED
Claire TollnerCanadaStephen Shaw PROPOSAL
Smith GlickSpainElwin Sharvill QUALIFIED
Adams MorascaRussiaIvan Magalhaes NEGOTIATION
Costa DilliardJapanAnna Fali NEGOTIATION
Deepesh ChuiRussiaOnyama Limba QUALIFIED
Alejandro PerinAustraliaAsiya Javayant UNQUALIFIED
Wickens NestleUnited KingdomOnyama Limba PROPOSAL
Leja CaldareraGermanyAmy Elsner RENEWAL
Jennifer AmigonAustraliaIvan Magalhaes NEW
Antonio CaudyBrazilIvan Magalhaes UNQUALIFIED
David DarakjyItalyOnyama Limba NEGOTIATION
Maria MarrierBrazilStephen Shaw UNQUALIFIED
Silvio SlusarskiArgentinaIvan Magalhaes NEW
Munro FerenczItalyElwin Sharvill NEGOTIATION
Maisha RulapaughJapanIvan Magalhaes QUALIFIED
Greenwood BologniaUnited KingdomXuxue Feng NEW
Claire TollnerFranceAsiya Javayant NEW
Deepesh ChuiItalyElwin Sharvill NEGOTIATION
Octavia MaletCanadaElwin Sharvill RENEWAL
Ashley DoeRussiaAnna Fali QUALIFIED
Costa DilliardBrazilXuxue Feng PROPOSAL
Deepesh ChuiItalyAnna Fali RENEWAL
Salvatore StockhamJapanAsiya Javayant NEGOTIATION
Cody SaylorsAustraliaOnyama Limba 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>