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.
Documentation<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" action="#{watermarkView.search}" value="Regular" ajax="false" /> <p:commandButton id="ajax" action="#{watermarkView.search}" value="Ajax" onclick="PrimeFaces.cleanWatermarks();" oncomplete="PrimeFaces.showWatermarks();" update="messages" /> </h:form>
@Named @RequestScoped public class WatermarkView { private String keyword; public String getKeyword() { return keyword; } public void setKeyword(String keyword) { this.keyword = keyword; } public void search() { FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"No results found with ", "'" + keyword + "'")); } }