I know that we need to add explicitly process="@this"
to get the p:commandbutton
action get invoked and I also know that process attribute defaults to @form
in primefaces.
Since process is defaulted to @form
shouldn't the button also get processed along with the other elements in the form and its action should get invoked.
Can anyone explain the exact reason behind this?
Process @form
mean the current form of the commandLink/Button
Process @this
mean the current component of the commandLink/Button
. Check below code.
process.xhtml
<h:form id="form1">
<h:inputText value="#{ProcessBean.id}" id="id"/><br/>
<h:panelGroup id="panel_1">
<h:inputText value="#{ProcessBean.name}" id="name"/><br/>
</h:panelGroup>
<h:panelGroup id="panel_2">
<h:inputText value="#{ProcessBean.address}"/>
<br/>
<p:commandButton process="@form" value="Btm1" id="button1" action="#{ProcessBean.show}"/><!-- Default -->
<p:commandButton process="@this" value="Btm2" id="button2" action="#{ProcessBean.show}"/>
<p:commandButton process="@this form1:panel_1" value="Btm3" id="button3" action="#{ProcessBean.show}"/>
</h:panelGroup>
</h:form>
ProcessBean.java
@ManagedBean(name = "ProcessBean")
public class ProcessBean {
private String id;
private String name;
private String address;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public void show() {
System.out.println(id);
System.out.println(name);
System.out.println(address);
}
}
Let's user input inputbox
001 -> id
Jone -> name
London -> address
Click button1
, all JSF component(Eg : id, name, address)
entire of the form will be process. Output will be :
001
Jone
London
Click button2
, The process will be itself (Eg : button2). No process for id, name, address
. Output will be:
null
null
null
Click button3
, all JSF component(Eg : name)
entire of the panel_1
and button3
will be process. Output will be :
null
Jone
null
Does not invoke your action method? There might be validation or conversion failed before invoke.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With