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
Maria MarrierFranceIoni Bowcher UNQUALIFIED
Ashley DoeIndiaElwin Sharvill NEGOTIATION
Leon OldroydArgentinaIoni Bowcher PROPOSAL
Sinclair WaycottJapanStephen Shaw PROPOSAL
Salvatore StockhamJapanBernardo Dominic NEW
Isabel BowleyJapanBernardo Dominic UNQUALIFIED
Deepesh ChuiSpainStephen Shaw NEW
Julie StensethAustraliaStephen Shaw PROPOSAL
Smith GlickArgentinaBernardo Dominic PROPOSAL
Emily WhobreyFranceStephen Shaw UNQUALIFIED
Mayumi KolmetzRussiaAmy Elsner NEW
Faith GillianAustraliaAnna Fali NEGOTIATION
Izzy GarufiCanadaIoni Bowcher RENEWAL
Ashley DoeAustraliaElwin Sharvill NEW
Maisha RulapaughItalyAmy Elsner RENEWAL
Francesco ShinkoIndiaAnna Fali PROPOSAL
Chavez BriddickItalyElwin Sharvill NEW
Tony FollerJapanXuxue Feng PROPOSAL
Silvio SlusarskiArgentinaIvan Magalhaes PROPOSAL
Antonio CaudyCanadaStephen Shaw UNQUALIFIED
Sinclair WaycottRussiaAmy Elsner UNQUALIFIED
Jones VocelkaUnited KingdomElwin Sharvill PROPOSAL
Maisha RulapaughFranceIoni Bowcher NEGOTIATION
Salvatore StockhamJapanElwin Sharvill PROPOSAL
Murillo MaletSpainAnna Fali NEGOTIATION
Greenwood BologniaAustraliaXuxue Feng PROPOSAL
Deepesh ChuiBrazilIoni Bowcher QUALIFIED
David DarakjyUnited KingdomXuxue Feng QUALIFIED
Adams MorascaJapanStephen Shaw RENEWAL
Faith GillianRussiaAsiya Javayant RENEWAL
Maisha RulapaughJapanXuxue Feng RENEWAL
Francesco ShinkoArgentinaXuxue Feng RENEWAL
Smith GlickJapanAnna Fali NEW
Clifford RimSpainElwin Sharvill PROPOSAL
James ButtAustraliaStephen Shaw PROPOSAL
Misaki RoysterFranceAsiya Javayant NEW
Francesco ShinkoAustraliaAsiya Javayant NEW
Leon OldroydJapanStephen Shaw RENEWAL
Jones VocelkaIndiaStephen Shaw PROPOSAL
Julie StensethAustraliaBernardo Dominic UNQUALIFIED
Mayumi KolmetzBrazilAsiya Javayant RENEWAL
Maisha RulapaughBrazilAsiya Javayant UNQUALIFIED
Maisha RulapaughRussiaAmy Elsner NEGOTIATION
Munro FerenczAustraliaStephen Shaw NEGOTIATION
Greenwood BologniaUnited KingdomStephen Shaw RENEWAL
Munro FerenczFranceAnna Fali UNQUALIFIED
Octavia MaletIndiaIvan Magalhaes RENEWAL
Antonio CaudyAustraliaIvan Magalhaes QUALIFIED
Clifford RimFranceXuxue Feng NEGOTIATION
James ButtFranceOnyama Limba UNQUALIFIED
Horizontal
NameCountryRepresentativeStatus
Faith GillianFranceOnyama Limba UNQUALIFIED
Arvin AlbaresRussiaAsiya Javayant PROPOSAL
Ashley DoeItalyBernardo Dominic RENEWAL
Izzy GarufiArgentinaAmy Elsner NEGOTIATION
Murillo MaletSpainXuxue Feng QUALIFIED
Costa DilliardFranceAnna Fali RENEWAL
James ButtArgentinaOnyama Limba PROPOSAL
James ButtIndiaOnyama Limba PROPOSAL
Greenwood BologniaGermanyBernardo Dominic NEGOTIATION
Juan WieserRussiaIvan Magalhaes NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Ivar PaprockiSpain2026-04-20Commercial Press PROPOSAL19Amy Elsner
1001Ivar PaprockiBrazil2026-04-13Truhlar And Truhlar Attys UNQUALIFIED18Elwin Sharvill
1002Smith GlickGermany2026-04-12Feiner Bros RENEWAL91Elwin Sharvill
1003Arvin AlbaresUnited Kingdom2026-04-13King, Christopher A Esq NEGOTIATION17Asiya Javayant
1004Aruna FigeroaArgentina2026-04-12Rangoni Of Florence NEGOTIATION56Stephen Shaw
1005Munro FerenczIndia2026-04-15Feltz Printing Service RENEWAL21Onyama Limba
1006Kaitlin OstroskyUnited Kingdom2026-04-26Truhlar And Truhlar Attys UNQUALIFIED22Stephen Shaw
1007Jefferson SchemmerIndia2026-04-14Buckley Miller Wright NEGOTIATION61Asiya Javayant
1008Silvio SlusarskiJapan2026-04-30King, Christopher A Esq NEW45Ioni Bowcher
1009Leon OldroydRussia2026-04-18Truhlar And Truhlar Attys UNQUALIFIED71Anna Fali
1010Costa DilliardJapan2026-04-27Rousseaux, Michael Esq PROPOSAL68Asiya Javayant
1011Ricardo GauchoIndia2026-04-24Truhlar And Truhlar Attys QUALIFIED99Ioni Bowcher
1012Izzy GarufiJapan2026-04-11Buckley Miller Wright UNQUALIFIED46Ivan Magalhaes
1013Misaki RoysterItaly2026-04-08Rangoni Of Florence NEGOTIATION36Ioni Bowcher
1014Julie StensethUnited Kingdom2026-04-14Printing Dimensions NEGOTIATION25Ioni Bowcher
1015Mujtaba NickaUnited Kingdom2026-04-23King, Christopher A Esq NEW18Amy Elsner
1016Jones VocelkaJapan2026-04-18King, Christopher A Esq NEGOTIATION98Onyama Limba
1017Leja CaldareraJapan2026-04-21Chanay, Jeffrey A Esq NEGOTIATION42Ioni Bowcher
1018Sinclair WaycottArgentina2026-04-17Feiner Bros QUALIFIED56Xuxue Feng
1019Jefferson SchemmerSpain2026-04-10Rousseaux, Michael Esq PROPOSAL65Amy Elsner
1020Silvio SlusarskiFrance2026-04-07Truhlar And Truhlar Attys QUALIFIED66Stephen Shaw
1021Stacey MacleadArgentina2026-04-12Printing Dimensions PROPOSAL85Elwin Sharvill
1022Sinclair WaycottIndia2026-04-18Rangoni Of Florence QUALIFIED84Bernardo Dominic
1023Cody SaylorsGermany2026-04-26Dorl, James J Esq NEGOTIATION87Elwin Sharvill
1024James ButtFrance2026-04-30Feiner Bros UNQUALIFIED17Asiya Javayant
1025Izzy GarufiJapan2026-04-17Chanay, Jeffrey A Esq PROPOSAL67Anna Fali
1026Darci PoquetteCanada2026-04-18Chanay, Jeffrey A Esq NEGOTIATION65Bernardo Dominic
1027Misaki RoysterRussia2026-04-05Chanay, Jeffrey A Esq RENEWAL94Elwin Sharvill
1028Stacey MacleadBrazil2026-04-25Commercial Press NEW76Stephen Shaw
1029Munro FerenczJapan2026-04-16Morlong Associates PROPOSAL46Onyama Limba
1030Maria MarrierItaly2026-04-20Feiner Bros RENEWAL41Ivan Magalhaes
1031Claire TollnerJapan2026-04-09Truhlar And Truhlar Attys NEW1Asiya Javayant
1032Antonio CaudyBrazil2026-05-02Chanay, Jeffrey A Esq NEGOTIATION30Anna Fali
1033Adams MorascaIndia2026-04-18Morlong Associates PROPOSAL22Asiya Javayant
1034Ricardo GauchoSpain2026-04-24King, Christopher A Esq PROPOSAL63Elwin Sharvill
1035Costa DilliardArgentina2026-04-05Chapman, Ross E Esq NEGOTIATION79Ioni Bowcher
1036Julie StensethBrazil2026-05-04King, Christopher A Esq QUALIFIED35Onyama Limba
1037Munro FerenczBrazil2026-05-02Commercial Press UNQUALIFIED73Onyama Limba
1038Jones VocelkaCanada2026-04-14Dorl, James J Esq UNQUALIFIED79Anna Fali
1039Jefferson SchemmerCanada2026-04-10Morlong Associates QUALIFIED92Stephen Shaw
1040Stacey MacleadAustralia2026-05-01Chapman, Ross E Esq PROPOSAL47Asiya Javayant
1041Isabel BowleyRussia2026-04-12King, Christopher A Esq RENEWAL53Amy Elsner
1042Salvatore StockhamIndia2026-04-12Buckley Miller Wright UNQUALIFIED81Ivan Magalhaes
1043Silvio SlusarskiSpain2026-04-13Chapman, Ross E Esq NEGOTIATION43Ioni Bowcher
1044Murillo MaletArgentina2026-04-28King, Christopher A Esq PROPOSAL53Anna Fali
1045Izzy GarufiCanada2026-04-12Benton, John B Jr QUALIFIED7Amy Elsner
1046Julie StensethJapan2026-05-03Feltz Printing Service QUALIFIED37Anna Fali
1047Kaitlin OstroskyAustralia2026-04-22Chanay, Jeffrey A Esq UNQUALIFIED57Xuxue Feng
1048Munro FerenczJapan2026-04-13Benton, John B Jr PROPOSAL60Anna Fali
1049Ivar PaprockiIndia2026-04-25King, Christopher A Esq QUALIFIED16Ivan Magalhaes
Frozen Rows
NameCountryRepresentativeStatus
Mayumi KolmetzSpainIvan Magalhaes UNQUALIFIED
Ricardo GauchoCanadaAnna Fali QUALIFIED
Alejandro PerinFranceIoni Bowcher NEW
Francesco ShinkoCanadaAnna Fali QUALIFIED
Silvio SlusarskiIndiaBernardo Dominic UNQUALIFIED
Octavia MaletItalyAnna Fali RENEWAL
Arvin AlbaresAustraliaAsiya Javayant NEGOTIATION
Aditya KuskoSpainAnna Fali NEGOTIATION
Leja CaldareraGermanyBernardo Dominic UNQUALIFIED
Silvio SlusarskiJapanStephen Shaw RENEWAL
Rodrigues CampainIndiaAmy Elsner NEGOTIATION
Sinclair WaycottUnited KingdomAmy Elsner UNQUALIFIED
Izzy GarufiRussiaAmy Elsner NEGOTIATION
Rodrigues CampainAustraliaAmy Elsner PROPOSAL
Wickens NestleSpainAsiya Javayant PROPOSAL
David DarakjyRussiaAmy Elsner PROPOSAL
Adams MorascaSpainStephen Shaw QUALIFIED
Julie StensethIndiaAnna Fali QUALIFIED
Kaitlin OstroskySpainAsiya Javayant PROPOSAL
Rodrigues CampainBrazilAmy Elsner RENEWAL
Wickens NestleFranceXuxue Feng NEGOTIATION
Mujtaba NickaRussiaStephen Shaw QUALIFIED
Clifford RimAustraliaXuxue Feng RENEWAL
Munro FerenczJapanOnyama Limba UNQUALIFIED
Jennifer AmigonIndiaElwin Sharvill RENEWAL
Deepesh ChuiItalyAmy Elsner NEGOTIATION
Julie StensethSpainAsiya Javayant QUALIFIED
Jennifer AmigonItalyElwin Sharvill NEW
Rodrigues CampainArgentinaElwin Sharvill UNQUALIFIED
Kaitlin OstroskyAustraliaOnyama Limba RENEWAL
Antonio CaudyIndiaStephen Shaw RENEWAL
Cody SaylorsCanadaAsiya Javayant PROPOSAL
Johnson SergiCanadaXuxue Feng UNQUALIFIED
Sinclair WaycottItalyElwin Sharvill NEW
Izzy GarufiFranceIoni Bowcher UNQUALIFIED
Salvatore StockhamFranceAmy Elsner RENEWAL
Leja CaldareraFranceAnna Fali RENEWAL
Adams MorascaUnited KingdomBernardo Dominic PROPOSAL
Clifford RimItalyBernardo Dominic NEW
Silvio SlusarskiFranceXuxue Feng NEGOTIATION
Johnson SergiArgentinaAmy Elsner NEGOTIATION
Johnson SergiJapanXuxue Feng QUALIFIED
Faith GillianCanadaBernardo Dominic RENEWAL
Julie StensethItalyOnyama Limba UNQUALIFIED
Izzy GarufiArgentinaIvan Magalhaes NEW
Salvatore StockhamBrazilAsiya Javayant QUALIFIED
Adams MorascaCanadaIvan Magalhaes RENEWAL
Jeanfrancois VenereJapanElwin Sharvill UNQUALIFIED
Murillo MaletSpainAmy Elsner UNQUALIFIED
Mujtaba NickaArgentinaOnyama Limba RENEWAL
Frozen Columns
Name
Mayumi Kolmetz
Munro Ferencz
Mayumi Kolmetz
Mujtaba Nicka
Antonio Caudy
Ricardo Gaucho
Darci Poquette
Costa Dilliard
Kaitlin Ostrosky
Johnson Sergi
Leon Oldroyd
Sinclair Waycott
Leon Oldroyd
Juan Wieser
Maria Marrier
Greenwood Bolognia
David Darakjy
Emily Whobrey
Julie Stenseth
Jones Vocelka
Stacey Maclead
Stacey Maclead
Izzy Garufi
James Butt
Johnson Sergi
Aruna Figeroa
Alejandro Perin
Silvio Slusarski
Mujtaba Nicka
Ricardo Gaucho
Jones Vocelka
Deepesh Chui
Ricardo Gaucho
Salvatore Stockham
Octavia Malet
Johnson Sergi
Aruna Figeroa
Morrow Ruta
Arvin Albares
Munro Ferencz
Morrow Ruta
Deepesh Chui
Juan Wieser
Darci Poquette
Mayumi Kolmetz
Aika Inouye
Sinclair Waycott
Deepesh Chui
Tony Foller
Costa Dilliard
IdCountryDate
1000Russia2026-05-02
1001France2026-04-06
1002Italy2026-04-24
1003India2026-04-07
1004Argentina2026-04-25
1005Australia2026-04-07
1006India2026-04-12
1007France2026-05-04
1008India2026-04-25
1009Japan2026-05-03
1010India2026-04-29
1011Germany2026-04-08
1012Germany2026-04-17
1013Australia2026-04-28
1014India2026-04-30
1015Japan2026-04-19
1016Italy2026-04-24
1017Italy2026-04-20
1018Canada2026-04-09
1019Argentina2026-04-25
1020Russia2026-04-28
1021India2026-04-20
1022Brazil2026-04-14
1023United Kingdom2026-04-10
1024Italy2026-04-30
1025Spain2026-04-26
1026United Kingdom2026-04-05
1027United Kingdom2026-04-19
1028Argentina2026-04-06
1029Germany2026-04-25
1030Argentina2026-04-23
1031Italy2026-04-16
1032France2026-04-27
1033France2026-04-18
1034Canada2026-04-11
1035Brazil2026-05-03
1036Japan2026-04-25
1037Spain2026-04-19
1038Russia2026-04-17
1039Brazil2026-04-14
1040United Kingdom2026-04-22
1041Italy2026-04-13
1042Argentina2026-05-01
1043Argentina2026-05-04
1044Russia2026-04-27
1045India2026-04-27
1046Spain2026-04-09
1047Brazil2026-04-11
1048Australia2026-05-03
1049Spain2026-04-28

On-Demand Data

NameIdCountryDate
Aika Inouye1000Brazil2026-04-29
David Darakjy1001Russia2026-04-12
Juan Wieser1002Argentina2026-04-24
Tony Foller1003United Kingdom2026-04-27
Wickens Nestle1004France2026-05-01
Deepesh Chui1005Australia2026-04-08
Darci Poquette1006Japan2026-04-21
Jefferson Schemmer1007United Kingdom2026-04-28
Ivar Paprocki1008Spain2026-04-18
Salvatore Stockham1009France2026-04-09
Adams Morasca1010Brazil2026-04-22
Aika Inouye1011France2026-04-17
Francesco Shinko1012United Kingdom2026-04-13
Emily Whobrey1013Russia2026-04-30
Misaki Royster1014Japan2026-04-10
Sinclair Waycott1015Argentina2026-04-22
Claire Tollner1016Russia2026-05-04
Johnson Sergi1017Germany2026-04-10
Cody Saylors1018United Kingdom2026-04-17
Jones Vocelka1019France2026-04-16
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Ashley DoeRussiaAsiya Javayant NEGOTIATION
David DarakjyCanadaOnyama Limba PROPOSAL
Mujtaba NickaGermanyXuxue Feng NEGOTIATION
Darci PoquetteCanadaIoni Bowcher RENEWAL
Chavez BriddickJapanXuxue Feng NEGOTIATION
David DarakjyItalyAsiya Javayant NEGOTIATION
Leon OldroydBrazilIoni Bowcher NEGOTIATION
Ivar PaprockiAustraliaAmy Elsner PROPOSAL
Leja CaldareraAustraliaAmy Elsner RENEWAL
Antonio CaudyAustraliaAnna Fali QUALIFIED
Julie StensethItalyIvan Magalhaes RENEWAL
Maria MarrierItalyBernardo Dominic PROPOSAL
Maisha RulapaughCanadaAnna Fali QUALIFIED
Mujtaba NickaGermanyXuxue Feng NEGOTIATION
Aditya KuskoCanadaIvan Magalhaes NEGOTIATION
Leja CaldareraItalyIoni Bowcher PROPOSAL
Johnson SergiBrazilAmy Elsner RENEWAL
Costa DilliardGermanyAnna Fali RENEWAL
Johnson SergiUnited KingdomBernardo Dominic QUALIFIED
Kadeem FlosiGermanyOnyama Limba PROPOSAL
Jones VocelkaCanadaOnyama Limba NEW
James ButtRussiaIvan Magalhaes RENEWAL
Clifford RimGermanyIvan Magalhaes QUALIFIED
Mujtaba NickaRussiaAmy Elsner PROPOSAL
Maria MarrierAustraliaElwin Sharvill RENEWAL
Ricardo GauchoBrazilAnna Fali UNQUALIFIED
Juan WieserCanadaIvan Magalhaes PROPOSAL
Octavia MaletIndiaOnyama Limba RENEWAL
Jefferson SchemmerFranceOnyama Limba NEW
Clifford RimArgentinaElwin Sharvill NEGOTIATION
Ashley DoeArgentinaElwin Sharvill NEGOTIATION
Emily WhobreyUnited KingdomElwin Sharvill NEGOTIATION
Jennifer AmigonCanadaAnna Fali UNQUALIFIED
Munro FerenczAustraliaBernardo Dominic UNQUALIFIED
Arvin AlbaresSpainIoni Bowcher PROPOSAL
David DarakjyGermanyOnyama Limba UNQUALIFIED
Misaki RoysterJapanIoni Bowcher UNQUALIFIED
James ButtRussiaXuxue Feng NEW
Rodrigues CampainAustraliaAmy Elsner UNQUALIFIED
Francesco ShinkoBrazilAnna Fali NEW

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