The <p:commandButton>
processes indeed by default the entire form (process="@form"
), you can change this by specifying only the current component in the process
attribute.
<p:commandButton value="Reset" ... process="@this" />
However, this will fail if the form is already been validated beforehand. The input fields which have been marked invalid won't be updated with the new model value (which you've resetted yourself). If you're using PrimeFaces 3.4, then embed <p:resetInput>
in the button:
<p:commandButton value="Reset" ... process="@this">
<p:resetInput target="@form" />
</p:commandButton>
If you aren't on PrimeFaces 3.4 yet and can't upgrade to it, you can use OmniFaces ResetInputAjaxActionListener
for this.
A completely different alternative is to just refresh the current page by a fresh new GET request.
<p:button value="Reset" />
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…