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
Antonio CaudyItalyElwin Sharvill NEW
Antonio CaudyIndiaOnyama Limba RENEWAL
Ashley DoeCanadaElwin Sharvill QUALIFIED
Chavez BriddickSpainOnyama Limba QUALIFIED
Munro FerenczCanadaBernardo Dominic RENEWAL
Alejandro PerinIndiaXuxue Feng UNQUALIFIED
Aika InouyeFranceXuxue Feng QUALIFIED
Morrow RutaItalyXuxue Feng QUALIFIED
Mayumi KolmetzUnited KingdomAsiya Javayant UNQUALIFIED
Claire TollnerGermanyXuxue Feng QUALIFIED
Alejandro PerinIndiaXuxue Feng RENEWAL
Claire TollnerArgentinaAmy Elsner RENEWAL
Maria MarrierUnited KingdomBernardo Dominic NEW
Costa DilliardJapanOnyama Limba NEW
Maria MarrierJapanStephen Shaw NEGOTIATION
Smith GlickCanadaElwin Sharvill UNQUALIFIED
Nicolas IturbideRussiaBernardo Dominic RENEWAL
Greenwood BologniaItalyOnyama Limba UNQUALIFIED
Leja CaldareraItalyBernardo Dominic PROPOSAL
Isabel BowleyGermanyAsiya Javayant QUALIFIED
Munro FerenczRussiaBernardo Dominic RENEWAL
Sinclair WaycottAustraliaBernardo Dominic NEW
Ashley DoeCanadaOnyama Limba UNQUALIFIED
Rodrigues CampainIndiaAsiya Javayant UNQUALIFIED
Octavia MaletFranceOnyama Limba QUALIFIED
Francesco ShinkoUnited KingdomAsiya Javayant NEW
Stacey MacleadGermanyAsiya Javayant UNQUALIFIED
Munro FerenczUnited KingdomXuxue Feng NEGOTIATION
Ashley DoeFranceStephen Shaw UNQUALIFIED
Deepesh ChuiArgentinaIoni Bowcher UNQUALIFIED
Claire TollnerJapanAsiya Javayant PROPOSAL
Salvatore StockhamFranceAsiya Javayant UNQUALIFIED
Aditya KuskoGermanyXuxue Feng QUALIFIED
Mujtaba NickaRussiaOnyama Limba UNQUALIFIED
Juan WieserFranceIvan Magalhaes QUALIFIED
Chavez BriddickBrazilXuxue Feng UNQUALIFIED
Faith GillianFranceAmy Elsner QUALIFIED
Deepesh ChuiItalyIvan Magalhaes PROPOSAL
Salvatore StockhamRussiaIoni Bowcher NEW
Ricardo GauchoJapanIoni Bowcher UNQUALIFIED
Aditya KuskoCanadaXuxue Feng RENEWAL
Jones VocelkaRussiaBernardo Dominic UNQUALIFIED
Octavia MaletSpainIoni Bowcher UNQUALIFIED
Emily WhobreyGermanyElwin Sharvill RENEWAL
Kadeem FlosiArgentinaElwin Sharvill RENEWAL
Jones VocelkaUnited KingdomIvan Magalhaes QUALIFIED
Tony FollerAustraliaBernardo Dominic QUALIFIED
Chavez BriddickGermanyXuxue Feng NEW
Claire TollnerCanadaElwin Sharvill QUALIFIED
Murillo MaletItalyAnna Fali NEW
Horizontal
NameCountryRepresentativeStatus
Sinclair WaycottIndiaXuxue Feng PROPOSAL
Clifford RimRussiaBernardo Dominic NEW
Isabel BowleySpainIoni Bowcher QUALIFIED
Leon OldroydAustraliaXuxue Feng UNQUALIFIED
Clifford RimGermanyAsiya Javayant QUALIFIED
Darci PoquetteCanadaXuxue Feng QUALIFIED
Chavez BriddickJapanAsiya Javayant NEGOTIATION
Murillo MaletRussiaOnyama Limba NEW
Maria MarrierArgentinaStephen Shaw UNQUALIFIED
Cody SaylorsAustraliaOnyama Limba PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Isabel BowleyFrance2026-05-02Chapman, Ross E Esq QUALIFIED82Onyama Limba
1001Jefferson SchemmerIndia2026-05-19Rousseaux, Michael Esq QUALIFIED31Xuxue Feng
1002Maria MarrierRussia2026-05-18Truhlar And Truhlar Attys RENEWAL62Anna Fali
1003Faith GillianArgentina2026-05-08Feltz Printing Service RENEWAL25Anna Fali
1004Munro FerenczBrazil2026-05-22Rangoni Of Florence QUALIFIED57Ioni Bowcher
1005Misaki RoysterCanada2026-05-29Truhlar And Truhlar Attys PROPOSAL55Anna Fali
1006Kadeem FlosiFrance2026-05-20Chanay, Jeffrey A Esq NEGOTIATION46Asiya Javayant
1007Isabel BowleyRussia2026-05-11Morlong Associates QUALIFIED60Xuxue Feng
1008Deepesh ChuiUnited Kingdom2026-05-26Chapman, Ross E Esq NEGOTIATION18Onyama Limba
1009Cody SaylorsSpain2026-05-17Buckley Miller Wright UNQUALIFIED43Ivan Magalhaes
1010Silvio SlusarskiSpain2026-05-14Benton, John B Jr RENEWAL25Xuxue Feng
1011David DarakjyArgentina2026-05-17King, Christopher A Esq PROPOSAL56Asiya Javayant
1012Silvio SlusarskiFrance2026-05-03Feltz Printing Service RENEWAL65Bernardo Dominic
1013Jennifer AmigonBrazil2026-05-15Benton, John B Jr NEW69Amy Elsner
1014David DarakjyFrance2026-05-15Commercial Press QUALIFIED2Amy Elsner
1015Kadeem FlosiBrazil2026-05-10Benton, John B Jr QUALIFIED85Amy Elsner
1016Murillo MaletAustralia2026-05-31Commercial Press PROPOSAL20Bernardo Dominic
1017Johnson SergiIndia2026-05-16King, Christopher A Esq NEW49Stephen Shaw
1018Salvatore StockhamCanada2026-05-10Chapman, Ross E Esq QUALIFIED7Ioni Bowcher
1019Wickens NestleUnited Kingdom2026-05-11Commercial Press NEGOTIATION65Ioni Bowcher
1020Stacey MacleadFrance2026-05-08Buckley Miller Wright RENEWAL88Ivan Magalhaes
1021Murillo MaletItaly2026-05-14Dorl, James J Esq PROPOSAL52Asiya Javayant
1022Leja CaldareraGermany2026-05-22Truhlar And Truhlar Attys UNQUALIFIED50Ioni Bowcher
1023Jennifer AmigonJapan2026-05-12Chapman, Ross E Esq UNQUALIFIED7Xuxue Feng
1024Leja CaldareraAustralia2026-05-19Feiner Bros QUALIFIED87Amy Elsner
1025Salvatore StockhamRussia2026-05-13Chanay, Jeffrey A Esq UNQUALIFIED59Asiya Javayant
1026Arvin AlbaresIndia2026-05-10King, Christopher A Esq QUALIFIED14Ivan Magalhaes
1027Kaitlin OstroskyIndia2026-05-07King, Christopher A Esq UNQUALIFIED74Elwin Sharvill
1028Octavia MaletArgentina2026-05-06Truhlar And Truhlar Attys NEW54Onyama Limba
1029Ivar PaprockiRussia2026-05-26Buckley Miller Wright NEW85Onyama Limba
1030Wickens NestleRussia2026-05-15Feiner Bros PROPOSAL20Anna Fali
1031Tony FollerJapan2026-05-15Truhlar And Truhlar Attys UNQUALIFIED85Ivan Magalhaes
1032Francesco ShinkoArgentina2026-05-11King, Christopher A Esq NEW92Stephen Shaw
1033Arvin AlbaresBrazil2026-05-20Buckley Miller Wright PROPOSAL92Stephen Shaw
1034Izzy GarufiBrazil2026-05-29Buckley Miller Wright QUALIFIED18Asiya Javayant
1035Salvatore StockhamFrance2026-05-11Rousseaux, Michael Esq NEW90Ioni Bowcher
1036Munro FerenczFrance2026-05-21Commercial Press PROPOSAL51Amy Elsner
1037Kaitlin OstroskyGermany2026-05-23King, Christopher A Esq NEW25Stephen Shaw
1038Munro FerenczIndia2026-05-08Commercial Press NEGOTIATION88Onyama Limba
1039Juan WieserIndia2026-05-20Commercial Press PROPOSAL54Ioni Bowcher
1040Arvin AlbaresFrance2026-05-03Printing Dimensions RENEWAL7Ioni Bowcher
1041Morrow RutaRussia2026-05-02Printing Dimensions UNQUALIFIED53Ivan Magalhaes
1042Nicolas IturbideSpain2026-05-03Benton, John B Jr NEW96Asiya Javayant
1043Sinclair WaycottArgentina2026-05-17Morlong Associates NEW53Ivan Magalhaes
1044Munro FerenczBrazil2026-05-09Rangoni Of Florence UNQUALIFIED54Onyama Limba
1045Arvin AlbaresUnited Kingdom2026-05-12Chanay, Jeffrey A Esq QUALIFIED74Stephen Shaw
1046Ivar PaprockiGermany2026-05-05Buckley Miller Wright NEW93Stephen Shaw
1047Arvin AlbaresJapan2026-05-28Chanay, Jeffrey A Esq QUALIFIED26Xuxue Feng
1048Mujtaba NickaUnited Kingdom2026-05-14Commercial Press QUALIFIED85Xuxue Feng
1049Johnson SergiArgentina2026-05-29Chanay, Jeffrey A Esq UNQUALIFIED28Amy Elsner
Frozen Rows
NameCountryRepresentativeStatus
Kaitlin OstroskyJapanIvan Magalhaes NEGOTIATION
Aruna FigeroaGermanyIoni Bowcher UNQUALIFIED
Faith GillianJapanOnyama Limba QUALIFIED
Cody SaylorsSpainOnyama Limba RENEWAL
Wickens NestleSpainStephen Shaw NEGOTIATION
Arvin AlbaresRussiaXuxue Feng QUALIFIED
Aika InouyeItalyStephen Shaw UNQUALIFIED
Arvin AlbaresIndiaStephen Shaw UNQUALIFIED
Deepesh ChuiGermanyXuxue Feng NEW
Cody SaylorsArgentinaAnna Fali RENEWAL
Costa DilliardArgentinaIvan Magalhaes UNQUALIFIED
Chavez BriddickRussiaIoni Bowcher NEW
Tony FollerItalyBernardo Dominic NEGOTIATION
Jennifer AmigonFranceOnyama Limba NEW
Ivar PaprockiBrazilAnna Fali UNQUALIFIED
Munro FerenczSpainAsiya Javayant QUALIFIED
Aika InouyeIndiaAmy Elsner NEW
Morrow RutaGermanyBernardo Dominic QUALIFIED
Izzy GarufiJapanStephen Shaw PROPOSAL
Julie StensethIndiaOnyama Limba NEGOTIATION
Juan WieserBrazilIoni Bowcher PROPOSAL
Chavez BriddickGermanyStephen Shaw PROPOSAL
Wickens NestleSpainIvan Magalhaes PROPOSAL
Wickens NestleItalyElwin Sharvill PROPOSAL
Antonio CaudyItalyOnyama Limba PROPOSAL
Kaitlin OstroskyFranceOnyama Limba PROPOSAL
Jones VocelkaCanadaStephen Shaw NEW
Deepesh ChuiJapanAnna Fali QUALIFIED
Murillo MaletGermanyElwin Sharvill RENEWAL
Jeanfrancois VenereBrazilBernardo Dominic RENEWAL
Claire TollnerIndiaAnna Fali RENEWAL
Aika InouyeArgentinaXuxue Feng QUALIFIED
Adams MorascaGermanyXuxue Feng NEW
Aruna FigeroaRussiaStephen Shaw QUALIFIED
Faith GillianIndiaXuxue Feng RENEWAL
Isabel BowleyIndiaXuxue Feng NEGOTIATION
Wickens NestleCanadaBernardo Dominic QUALIFIED
Munro FerenczFranceAmy Elsner NEGOTIATION
Jefferson SchemmerAustraliaXuxue Feng UNQUALIFIED
Jennifer AmigonCanadaAnna Fali NEW
Smith GlickGermanyAmy Elsner NEGOTIATION
Ivar PaprockiIndiaAnna Fali UNQUALIFIED
Jeanfrancois VenereItalyOnyama Limba NEW
Faith GillianIndiaAmy Elsner QUALIFIED
Izzy GarufiSpainAmy Elsner PROPOSAL
Clifford RimAustraliaOnyama Limba NEW
Deepesh ChuiUnited KingdomOnyama Limba QUALIFIED
Mayumi KolmetzJapanStephen Shaw QUALIFIED
Costa DilliardArgentinaXuxue Feng QUALIFIED
Kaitlin OstroskyUnited KingdomAnna Fali PROPOSAL
Frozen Columns
Name
Ricardo Gaucho
Leon Oldroyd
Darci Poquette
Jeanfrancois Venere
Stacey Maclead
Mujtaba Nicka
Leja Caldarera
Alejandro Perin
Nicolas Iturbide
Emily Whobrey
Mayumi Kolmetz
Aruna Figeroa
Stacey Maclead
Smith Glick
Mujtaba Nicka
Silvio Slusarski
James Butt
Wickens Nestle
Johnson Sergi
Morrow Ruta
Aika Inouye
Leja Caldarera
Mayumi Kolmetz
Tony Foller
Antonio Caudy
Salvatore Stockham
Izzy Garufi
Mayumi Kolmetz
Smith Glick
Morrow Ruta
Smith Glick
Deepesh Chui
Misaki Royster
Julie Stenseth
Izzy Garufi
Leon Oldroyd
Maria Marrier
Cody Saylors
Emily Whobrey
Johnson Sergi
Jones Vocelka
Antonio Caudy
Francesco Shinko
Leja Caldarera
Salvatore Stockham
Stacey Maclead
Chavez Briddick
Julie Stenseth
Adams Morasca
Chavez Briddick
IdCountryDate
1000Argentina2026-05-28
1001Italy2026-05-25
1002United Kingdom2026-05-28
1003Argentina2026-05-17
1004Canada2026-05-22
1005Japan2026-05-10
1006Italy2026-05-23
1007Italy2026-05-15
1008United Kingdom2026-05-10
1009India2026-05-11
1010Italy2026-05-05
1011Italy2026-05-12
1012Germany2026-05-15
1013Germany2026-05-30
1014Italy2026-05-08
1015Argentina2026-05-21
1016Argentina2026-05-20
1017Germany2026-05-07
1018France2026-05-18
1019Italy2026-05-02
1020India2026-05-27
1021Australia2026-05-19
1022Japan2026-05-23
1023France2026-05-04
1024Australia2026-05-28
1025India2026-05-22
1026Russia2026-05-26
1027Russia2026-05-11
1028Brazil2026-05-21
1029Canada2026-05-18
1030Russia2026-05-09
1031Japan2026-05-09
1032Germany2026-05-17
1033India2026-05-14
1034Spain2026-05-17
1035United Kingdom2026-05-03
1036Australia2026-05-23
1037Spain2026-05-25
1038Germany2026-05-27
1039Canada2026-05-17
1040France2026-05-04
1041Canada2026-05-13
1042Spain2026-05-25
1043Spain2026-05-09
1044Japan2026-05-19
1045United Kingdom2026-05-08
1046Japan2026-05-21
1047Brazil2026-05-10
1048Brazil2026-05-16
1049Canada2026-05-07

On-Demand Data

NameIdCountryDate
Deepesh Chui1000India2026-05-27
Johnson Sergi1001Canada2026-05-10
Jeanfrancois Venere1002Brazil2026-05-12
Faith Gillian1003Germany2026-05-10
Chavez Briddick1004Italy2026-05-04
Arvin Albares1005Russia2026-05-07
Octavia Malet1006India2026-05-17
Francesco Shinko1007Spain2026-05-11
Francesco Shinko1008Canada2026-05-25
Leon Oldroyd1009Canada2026-05-06
Murillo Malet1010United Kingdom2026-05-13
Leon Oldroyd1011Russia2026-05-28
Antonio Caudy1012Germany2026-05-05
Aruna Figeroa1013France2026-05-28
Ricardo Gaucho1014Brazil2026-05-15
Aruna Figeroa1015Australia2026-05-09
Julie Stenseth1016Canada2026-05-30
Antonio Caudy1017United Kingdom2026-05-05
Johnson Sergi1018Canada2026-05-04
Misaki Royster1019Canada2026-05-10
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Francesco ShinkoIndiaStephen Shaw QUALIFIED
Francesco ShinkoFranceBernardo Dominic PROPOSAL
Jeanfrancois VenereAustraliaAsiya Javayant UNQUALIFIED
Salvatore StockhamIndiaIvan Magalhaes PROPOSAL
Nicolas IturbideCanadaBernardo Dominic UNQUALIFIED
Sinclair WaycottIndiaStephen Shaw PROPOSAL
Tony FollerBrazilAnna Fali UNQUALIFIED
Ashley DoeFranceStephen Shaw RENEWAL
Deepesh ChuiBrazilAsiya Javayant QUALIFIED
Nicolas IturbideSpainAnna Fali UNQUALIFIED
Ricardo GauchoIndiaElwin Sharvill NEGOTIATION
Maria MarrierAustraliaBernardo Dominic PROPOSAL
Aditya KuskoFranceBernardo Dominic NEW
Kaitlin OstroskySpainStephen Shaw PROPOSAL
Murillo MaletFranceAsiya Javayant PROPOSAL
Greenwood BologniaAustraliaIvan Magalhaes NEGOTIATION
Stacey MacleadSpainXuxue Feng PROPOSAL
Cody SaylorsJapanAsiya Javayant NEGOTIATION
Cody SaylorsIndiaIvan Magalhaes NEGOTIATION
Tony FollerFranceOnyama Limba UNQUALIFIED
Isabel BowleyFranceAsiya Javayant PROPOSAL
Jefferson SchemmerArgentinaAmy Elsner PROPOSAL
Murillo MaletArgentinaXuxue Feng QUALIFIED
Maria MarrierIndiaAmy Elsner QUALIFIED
Costa DilliardSpainAsiya Javayant RENEWAL
Salvatore StockhamGermanyAmy Elsner QUALIFIED
Izzy GarufiUnited KingdomAsiya Javayant RENEWAL
David DarakjyGermanyIoni Bowcher PROPOSAL
Cody SaylorsSpainStephen Shaw UNQUALIFIED
Darci PoquetteUnited KingdomIoni Bowcher UNQUALIFIED
Darci PoquetteIndiaOnyama Limba NEW
Greenwood BologniaCanadaAsiya Javayant RENEWAL
Aika InouyeRussiaIoni Bowcher QUALIFIED
Maria MarrierAustraliaIvan Magalhaes UNQUALIFIED
Francesco ShinkoFranceBernardo Dominic NEGOTIATION
Isabel BowleyArgentinaOnyama Limba NEW
Jefferson SchemmerIndiaXuxue Feng NEW
Sinclair WaycottCanadaAsiya Javayant NEW
Kadeem FlosiFranceStephen Shaw PROPOSAL
Mayumi KolmetzBrazilIvan Magalhaes QUALIFIED

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