I have a database with 4 tables (Application, Province, Municipality, Town) where I have to add an application. I create 3 SelectOneMenu dependent to choose the Province depending on what is selected, the SelectOneMenu of Municipality must be updated and this must happen with Peoples, but when a Municipality is selected, Pueblo is not updated. If you can help me, I appreciate it. This is my code
<h:form id="form">
<p:commandButton icon="ui-icon-plusthick" id="addSolicBtn" value="Añadir solicitud" update=":solicDetail1" ajax="true"
oncomplete="PF('$solicDetail1').show()" style="margin-left: 10px;" />
</h:form>
<p:dialog id="solicDetail1" widgetVar="$solicDetail1" header="Añadir solicitud" hideEffect="explode" appendTo="@(body)"
resizable="false" draggable="false" closeOnEscape="true" modal="true">
<h:form id="formDialog">
<p:growl id="msgs" showDetail="true"/>
<p:panelGrid columns="2">
<h:outputLabel for="nomb_pers" value="Nombre de la persona: *" />
<p:inputText id="nomb_pers" value="#{solicitudManagedBean.selectsolicitud.nomb_pers}"
label="Nombre" placeholder="Nombre y Apellidos" style="width:135px">
<p:keyFilter regEx="/[A-Z .\á-ú]/i"/>
</p:inputText>
<h:outputLabel for="ci" value="Carnet de identidad: *" />
<p:inputMask id="ci" value="#{solicitudManagedBean.selectsolicitud.ci}" mask="99999999999"
placeholder="Carnet de identidad" style="width:135px"/>
<h:outputLabel for="direccion" value="Dirección: *" />
<p:inputText id="direccion" value="#{solicitudManagedBean.selectsolicitud.direccion}"
label="direccion" placeholder="Dirección" style="width:135px"/>
<h:outputLabel for="telefono" value="Teléfono: "/>
<p:inputText id="telefono" value="#{solicitudManagedBean.selectsolicitud.telefono}"
label="Nombre" placeholder="Número de teléfono" style="width:135px">
<p:keyFilter regEx="/[\d\-]/"/>
</p:inputText>
<h:outputLabel for="fecha" value="Fecha de solicitud: *"/>
<p:calendar id="fecha" value="#{solicitudManagedBean.selectsolicitud.fecha}" pattern="yyyy-MM-dd"
navigator="true" mode="popup" placeholder="Fecha de solicitud" locale="es"
style="width:500px"/>
<h:outputLabel for="tipo_afect" value="Tipo de afectación: *" />
<p:inputText id="tipo_afect" value="#{solicitudManagedBean.selectsolicitud.tipo_afect}"
label="tipo_afectación" placeholder="Tipo de afectación" style="width:135px"/>
<h:outputLabel for="cult_danado" value="Cultivo dañado: *" />
<p:inputText id="cult_danado" value="#{solicitudManagedBean.selectsolicitud.cult_danado}"
label="cultivo_dañado" placeholder="Cultivo dañado" style="width:135px"/>
<h:outputLabel for="zona_afect" value="Zona afectada: *" />
<p:inputText id="zona_afect" value="#{solicitudManagedBean.selectsolicitud.zona_afect}"
label="zona_afectada" placeholder="Zona afectada" style="width:135px" />
<h:outputLabel for="provlist" value="Provincia: *"/>
<p:selectOneMenu id="provlist" value="#{solicitudManagedBean.selectprov}" style="width:130px">
<f:selectItem itemLabel="Seleccione la provincia" itemValue="" noSelectionOption="true" />
<f:selectItems value="#{solicitudManagedBean.selectItemsOneProvincia}" />
<p:ajax update="munlist"/>
</p:selectOneMenu>
<h:outputLabel for="munlist" value="Municipio: *"/>
<p:selectOneMenu id="munlist" value="#{solicitudManagedBean.selectmun}" style="width:130px">
<f:selectItem itemLabel="Seleccione el municipio" itemValue="" noSelectionOption="true" />
<f:selectItems value="#{solicitudManagedBean.selectItemsOneMunicipio}" />
<p:ajax update="pueblolist"/>
</p:selectOneMenu>
<h:outputLabel for="pueblolist" value="Pueblo: *"/>
<p:row>
<p:column>
<p:selectOneMenu id="pueblolist" value="#{solicitudManagedBean.selectpueblo}" style="width:130px; margin-top: 10px" required="true" >
<f:selectItem itemLabel="Seleccione el pueblo" itemValue="" noSelectionOption="true" />
<f:selectItems value="#{solicitudManagedBean.selectItemsOnePueblo}" />
<p:ajax update="pueblolist"/>
</p:selectOneMenu>
</p:column>
</p:row>
<p:commandButton value="Añadir" process="@form" id="AddButtonId" ajax="true" icon="ui-icon-plus"
update=":formDialog:msgs" actionListener="#{solicitudManagedBean.addSolicitud()}" />
</p:panelGrid>
</h:form>
</p:dialog>
@ManagedBean
@RequestScoped
public class SolicitudManagedBean {
/**
* Creates a new instance of SolicitudManagedBean
*/
private String selectprov;
private String selectmun;
private String selectpueblo;
private List<SelectItem> selectItemsOneProvincia;
private List<SelectItem> selectItemsOneMunicipio;
private List<SelectItem> selectItemsOnePueblo;
private Solicitud selectsolicitud;
private final PuebloDAO pbdao = new PuebloDAO();
public SolicitudManagedBean() {
}
public String getSelectprov() {
return selectprov;
}
public void setSelectprov(String selectprov) {
this.selectprov = selectprov;
}
public String getSelectmun() {
return selectmun;
}
public void setSelectmun(String selectmun) {
this.selectmun = selectmun;
}
public List<SelectItem> getSelectItemsOneProvincia() {
this.selectItemsOneProvincia = new ArrayList<>();
UbisolicDAO udao = new UbisolicDAO();
List<Provincia> provincias = udao.allProv();
selectItemsOneProvincia.clear();
for (Provincia provincia : provincias) {
SelectItem selectItem = new SelectItem(provincia.getId(), provincia.getNomb_prov());
this.selectItemsOneProvincia.add(selectItem);
}
System.out.println("Se cargaron provincias: " + selectItemsOneProvincia.size());
return selectItemsOneProvincia;
}
public void setSelectItemsOneProvincia(List<SelectItem> selectItemsOneProvincia) {
this.selectItemsOneProvincia = selectItemsOneProvincia;
}
public List<SelectItem> getSelectItemsOneMunicipio() {
if (selectprov != null && !selectprov.equals("")) {
this.selectItemsOneMunicipio = new ArrayList<>();
UbisolicDAO udao = new UbisolicDAO();
List<Municipio> municipios = udao.listMunicipios(selectprov);
selectItemsOneMunicipio.clear();
for (Municipio municipio : municipios) {
SelectItem selectItem = new SelectItem(municipio.getId(), municipio.getNomb_mun());
this.selectItemsOneMunicipio.add(selectItem);
}
System.out.println("Se cargaron municipios: " + selectItemsOneMunicipio.size());
} else {
this.selectItemsOneMunicipio = new ArrayList<>();
}
return selectItemsOneMunicipio;
}
public void setSelectItemsOneMunicipio(List<SelectItem> selectItemsOneMunicipio) {
this.selectItemsOneMunicipio = selectItemsOneMunicipio;
}
public List<SelectItem> getSelectItemsOnePueblo() {
if (selectprov != null && !selectprov.equals("")
&& selectmun != null && !selectmun.equals("")) {
this.selectItemsOnePueblo = new ArrayList<>();
UbisolicDAO udao = new UbisolicDAO();
List<Pueblo> pueblos = udao.listPueblos(selectmun, selectprov);
selectItemsOnePueblo.clear();
for (Pueblo pueblo : pueblos) {
SelectItem selectItem = new SelectItem(pueblo.getId(), pueblo.getNomb_pueb());
this.selectItemsOnePueblo.add(selectItem);
}
System.out.println("Se cargaron pueblos: " + selectItemsOnePueblo.size());
} else {
this.selectItemsOnePueblo = new ArrayList<>();
}
return selectItemsOnePueblo;
}
public void setSelectItemsOnePueblo(List<SelectItem> selectItemsOnePueblo) {
this.selectItemsOnePueblo = selectItemsOnePueblo;
}
public Solicitud getSelectsolicitud() {
return selectsolicitud;
}
public void setSelectsolicitud(Solicitud selectsolicitud) {
this.selectsolicitud = selectsolicitud;
}
public String getSelectpueblo() {
return selectpueblo;
}
public void setSelectpueblo(String selectpueblo) {
this.selectpueblo = selectpueblo;
}
public void addSolicitud() throws ParseException {
SolicitudDAO sdao = new SolicitudDAO();
String msg;
long id_pueb = pbdao.getIdPueblo(selectpueblo).get(0);
if (sdao.addSolicitud(this.selectsolicitud)) {
msg = "Los datos se añadieron correctamente";
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, " ");
FacesContext.getCurrentInstance().addMessage(null, message);
} else {
msg = "Error añadiendo el registro";
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, " ");
FacesContext.getCurrentInstance().addMessage(null, message);
}
selectsolicitud = new Solicitud();
}
}