Signature is used to draw a signature as an input. Various options such as background color, foreground color, thickness are available for customization. Signature also supports touch enabled devices as well as typeable text.
<div class="card">
<h:form>
<p:growl>
<p:autoUpdate />
</p:growl>
<p:outputPanel id="input">
<p:outputLabel for="@next" value="Signature:" style="font-size:1.5rem" styleClass="block mb-2" />
<p:signature id="signature" widgetVar="sig" style="width:400px;height:200px" value="#{signatureView.value}" required="true" guideline="true"
textValue="#{signatureView.text}" base64Value="#{signatureView.base64}" />
</p:outputPanel>
<div style="margin:20px 0">
<p:commandButton value="Submit" icon="pi pi-check" update="output signature" />
<p:commandButton value="Clear" icon="pi pi-times" type="button" onclick="PF('sig').clear()" styleClass="ui-button-flat ml-2" />
</div>
<p:outputPanel id="output">
<h:outputText rendered="#{not empty signatureView.value}" style="font-size:1.5rem" styleClass="block mb-2" value="Your Signature" />
<p:signature id="signed" widgetVar="signed" style="width:400px;height:200px;" value="#{signatureView.value}"
textValue="#{signatureView.text}" readonly="true" rendered="#{not empty signatureView.value}" backgroundColor="#eaeaea"
color="#1769aa" />
</p:outputPanel>
</h:form>
</div>
package org.primefaces.showcase.view.input;
import jakarta.enterprise.context.RequestScoped;
import jakarta.inject.Named;
import io.quarkus.runtime.annotations.RegisterForReflection;
@Named
@RequestScoped
@RegisterForReflection(serialization = true)
public class SignatureView {
private String value;
private String text;
private String base64;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getBase64() {
return base64;
}
public void setBase64(String base64) {
this.base64 = base64;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}