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.

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

    <p:commandButton id="regular" action="#{watermarkView.search}" value="Regular" ajax="false" />
    <p:commandButton id="ajax" action="#{watermarkView.search}" value="Ajax"
                        onclick="PrimeFaces.cleanWatermarks();" oncomplete="PrimeFaces.showWatermarks();" update="messages" />