PFS (PrimeFaces Selectors) enables using jQuery Selector API when referencing components.
<div class="card">
<h:form>
<p:panel header="Form">
<h:panelGrid columns="4" cellpadding="5" styleClass="mb-3">
<h:outputLabel for="txt1" value="Text 1"/>
<p:inputText id="txt1" value="#{selectorView.text1}" required="true" label="Text 1">
<f:validateLength minimum="2"/>
</p:inputText>
<p:message for="txt1"/>
<h:outputText value="#{selectorView.text1}"/>
<h:outputLabel for="txt2" value="Text 2"/>
<p:inputText id="txt2" value="#{selectorView.text2}" required="true" label="Text 2"/>
<p:message for="txt2"/>
<h:outputText value="#{selectorView.text2}"/>
<h:outputLabel for="txt3" value="Text 3"/>
<h:selectOneMenu id="txt3" value="#{selectorView.text3}" required="true" label="Text 3">
<f:selectItem itemLabel="Select One" itemValue="" noSelectionOption="true"/>
<f:selectItem itemLabel="Option 1" itemValue="1"/>
<f:selectItem itemLabel="Option 2" itemValue="2"/>
<f:selectItem itemLabel="Option 3" itemValue="3"/>
</h:selectOneMenu>
<p:message for="txt3"/>
<h:outputText value="#{selectorView.text3}"/>
</h:panelGrid>
<p:commandButton update="@(form)" value="All Forms" styleClass="mr-2"/>
<p:commandButton update="@(form:last)" value="Last Form" styleClass="mr-2"/>
<p:commandButton update="@(.ui-panel)" value="All Panels" styleClass="mr-2"/>
<p:commandButton process="@(.ui-panel :input)" update="@(.ui-panel)" value="Inputs of Panel" styleClass="mr-2"/>
<p:commandButton process="@(.ui-panel :input:not(select))" update="@(.ui-panel)" value="Inputs Except Select"/>
<p:growl id="messages"/>
</p:panel>
</h:form>
</div>
@Named
@RequestScoped
public class SelectorView {
private String text1;
private String text2;
private String text3;
public String getText1() {
return text1;
}
public void setText1(String text1) {
this.text1 = text1;
}
public String getText2() {
return text2;
}
public void setText2(String text2) {
this.text2 = text2;
}
public String getText3() {
return text3;
}
public void setText3(String text3) {
this.text3 = text3;
}
}