So, it worked fine, until it get error required validation in form. myMaxDuration won't change anymore in xhtml, but when I sysout it in console it changed.
If, the myMaxDuration I send into bean is 30, Ajax worked fine. But, if myMaxDuration when I send into bean is 10, ajax won't work.
already tried using ajax update in bean
<p:panelGrid columns="1" columnClasses="ui-grid-col-6" layout="grid" styleClass="ui-panelgrid-blank">
<p:outputLabel value="Name"/>
<p:inputText value="#{myBean.nEmp.name}" required="true"/>
<p:outputLabel value="Status" styleClass="labelSmall"/>
<p:selectOneMenu required="true" value="#{myBean.nEmp.employmentStatusID}"
<f:selectItem itemValue="10" itemLabel="10"/>
<f:selectItem itemValue="20" itemLabel="20"/>
<f:selectItem itemValue="30" itemLabel="30"/>
<p:ajax listener="#{myBean.maxDuration()}" update=":form:durasiID"></p:ajax>
</p:selectOneMenu>
</p:panelGrid>
<p:outputPanel>
<p:panelGrid columns="1" columnClasses="ui-grid-col-3" layout="grid" styleClass="ui-panelgrid-blank" rendered="#{myBean.nEmp.employmentStatusID != 6}">
<p:outputLabel value="Durasi" styleClass="labelSmall"/>
<p:spinner min="1" max="#{myBean.myMaxDuration}" id="durasiID" value="{myBean.nEmp.monthDuration}"/>
</p:panelGrid>
</p:outputPanel>
<p:commandButton value="save" action="#{myBean.saveNewDecreeEmployee()}" />
on my bean
public void maxDuration() {
if(nEmp.getEmploymentStatusID() == 10) {
myMaxDuration = 10;
}
else if(nEmp.getEmploymentStatusID() == 20) {
myMaxDuration = 20;
}
else {
myMaxDuration = 30;
}
nEmp.setMonthDuration(myMaxDuration);
System.out.println(myMaxDuration + " - maxDuration");
}
the value of in xhtml should be changed like in console, after someone get error form validation field name required.