Watermark Watermark displays a hint about input fields by using native placeholder in modern browsers and a javascript based solution in legacy ones for browser compatibility. In case legacy browsers don't need to be supported, placeholder attribute of input components should be preferred.
<h:form>
    <p:messages id="messages" showDetail="true"/>

    <h:panelGrid columns="3" cellpadding="5" style="margin-bottom:10px">
        <h:outputLabel value="Search: "/>
        <p:inputText id="keyword" value="#{watermarkView.keyword}" required="true" label="Keyword"/>
        <p:watermark for="keyword" value="Search with a keyword" id="watermark" />
    </h:panelGrid>

    <p:commandButton id="regular" actionListener="#{watermarkView.search}" value="Regular" ajax="false" /> 
    <p:commandButton id="ajax" actionListener="#{watermarkView.search}" value="Ajax" 
                        onclick="PrimeFaces.cleanWatermarks();" oncomplete="PrimeFaces.showWatermarks();" update="messages" />
</h:form>
                
PrimeTek, Copyright © 2017
All rights reserved.
Running PrimeFaces-6.2-SNAPSHOT on Mojarra-2.3.2.