Input components keep their local values at state when validation fails. ResetInput is used to clear the cached values from state so that components retrieve their values from the backing bean model instead.
<div class="card">
<p:growl id="growl" globalOnly="true" showDetail="true">
<p:autoUpdate/>
</p:growl>
<h:form id="form">
<p:outputPanel id="panel" styleClass="mb-2">
<div class="formgrid grid p-fluid">
<div class="field col-12 md:col-6">
<p:outputLabel for="text1" value="Text 1"/>
<p:inputText id="text1" value="#{resetInputView.text1}" required="true" label="Firstname">
<f:validateLength minimum="2"/>
</p:inputText>
<p:message for="text1"/>
</div>
<div class="field col-12 md:col-6">
<p:outputLabel for="text2" value="Text 2"/>
<p:inputText id="text2" value="#{resetInputView.text2}" required="true" label="Surname"/>
<p:message for="text2"/>
</div>
</div>
</p:outputPanel>
<div class="flex flex-wrap justify-content-between gap-2">
<p:commandButton value="Submit" update="panel" action="#{resetInputView.save}" styleClass="mr-2" />
<div>
<p:commandButton value="Reset Fail" update="panel" process="@this"
action="#{resetInputView.resetFail}" styleClass="mr-2 p-button-outlined"/>
<p:commandButton value="Reset Tag" update="panel" process="@this" styleClass="mr-2 p-button-outlined">
<p:resetInput target="panel"/>
</p:commandButton>
<p:commandButton value="Reset Code" update="panel" process="@this"
action="#{resetInputView.reset}"
styleClass="mr-2 p-button-outlined"/>
<p:commandButton value="Reset Non-Ajax" action="#{resetInputView.reset}" immediate="true"
ajax="false" styleClass="mr-2 p-button-outlined">
<p:resetInput target="panel"/>
</p:commandButton>
<p:commandButton value="Reset p:ajax">
<p:ajax update="panel" resetValues="true"/>
</p:commandButton>
</div>
</div>
</h:form>
</div>