Como evitar repetidamente clicar em um botão em um formulário?

Meu código:

<h:form id="newBSTypePanel" >
    <h:panelGrid columns="2" id="newRecod" >
        <h:outputText value="Name"/><h:inputText value="#{treeTableController.newBStypeBean.currentObject.TYPENAME.value}" required="true" />
        <p:commandButton value="save" action="#{treeTableController.saveNewNodes}" oncomplete="Dlg.hide()" update="productDataForm"/>
        <p:commandButton value="close" oncomplete="Dlg.hide()" />
    </h:panelGrid>
</h:form>

Há bastante funcionalidade associada à ação de salvamento. Se eu clicar no botão repetidamente, ele poderá salvar alguns registros no banco de dados. Esse não é o meu desejo. Como impedir vários cliques e resolver isso?

questionAnswers(3)

yourAnswerToTheQuestion