TriStateCheckbox add a new state to a checkbox value.
<div class="card">
<h:form>
<p:growl id="growl" showDetail="true"/>
<h5 class="mt-0">Basic</h5>
<p:triStateCheckbox value="#{triStateCheckboxView.value1}"/>
<h5>Remote</h5>
<p:triStateCheckbox id="ajaxTriState" value="#{triStateCheckboxView.value2}">
<p:ajax event="change" update="growl" listener="#{triStateCheckboxView.addMessage}"/>
</p:triStateCheckbox>
<h5>Custom Icons and Label</h5>
<p:triStateCheckbox value="#{triStateCheckboxView.value3}" stateTwoIcon="pi pi-plus" stateThreeIcon="pi pi-minus" itemLabel="Custom Icons"/>
</h:form>
</div>
package org.primefaces.showcase.view.input;
import jakarta.annotation.PostConstruct;
import jakarta.faces.application.FacesMessage;
import jakarta.faces.context.FacesContext;
import jakarta.faces.view.ViewScoped;
import jakarta.inject.Named;
import java.io.Serializable;
import io.quarkus.runtime.annotations.RegisterForReflection;
@Named("triStateCheckboxView")
@ViewScoped
@RegisterForReflection(serialization = true)
public class TriStateCheckboxView implements Serializable {
private String value1;
private String value2;
private String value3;
private String value4;
@PostConstruct
public void init() {
value1 = "2";
value4 = "1";
}
public String getValue1() {
return value1;
}
public void setValue1(String value1) {
this.value1 = value1;
}
public String getValue2() {
return value2;
}
public void setValue2(String value2) {
this.value2 = value2;
}
public String getValue3() {
return value3;
}
public void setValue3(String value3) {
this.value3 = value3;
}
public String getValue4() {
return value4;
}
public void setValue4(String value4) {
this.value4 = value4;
}
public void addMessage() {
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO,
"State has been changed", "State is = " + value2);
FacesContext.getCurrentInstance().addMessage(null, msg);
}
}