Я уже давно занимаюсь этим.Когда я выбираю элемент в selectOneMenu, я хочу обновить другое selectOneMenu с определенными значениями, и оно не работает.
xhtml:
<p:dialog id="noviTermin_dlg" header="Upisi podatke o terminu" widgetVar="termin_dlg" modal="true"
height="250" width="500">
<h:panelGroup id="noviTerminPanel">
<p:panelGrid columns="2">
<h:outputText value="Pacijent:" />
<p:selectOneMenu id="pacijentiList" value="#{termini.selectedPacijent}"
filter="true" filterMatchMode="contains">
<p:ajax listener="#{termini.writeSomething}"
update="bolestiList" />
<f:selectItem itemLabel="Odaberi pacijenta" itemValue="" noSelectionOption="true" />
<f:selectItems value="#{termini.pacijenti_list}" var="pacijent"
itemLabel="#{pacijent.pacijent_prezime} #{pacijent.pacijent_ime}"
itemValue="#{pacijent}" />
</p:selectOneMenu>
<h:outputText value="Bolest:" />
<p:selectOneMenu id="bolestiList" value="#{termini.selectedBolest}"
filter="true" filterMatchMode="contains" disabled="#{empty selectedPacijent}">
<f:selectItem itemLabel="Odaberi bolest" itemValue="" noSelectionOption="true" />
<f:selectItems value="#{termini.bolesti_list}" var="bolest"
itemLabel="#{bolest.naziv_bolesti}"
itemValue="#{bolest}" />
</p:selectOneMenu>
<h:outputText value="Vrijeme pocetka:" />
<pe:timePicker mode="popup" />
<h:outputText value="Vrijeme kraja:" />
<pe:timePicker mode="popup" />
<f:facet name="footer">
<p:commandButton value="Spremi" icon="fa fa-save"
process="noviTerminPanel"
update="table_termini"
oncomplete="PF('termin_dlg').hide();"></p:commandButton>
</f:facet>
</p:panelGrid>
</h:panelGroup>
</p:dialog>
ManagedBean:
@ManagedBean(name="termini")
@ViewScoped
public class TerminiBean implements Serializable{
private List<Pacijenti> pacijenti_list;
private Pacijenti selectedPacijent;
private List<PovijestBolesti> bolesti_list;
private PovijestBolesti selectedBolest;
//+get set
public void writeSomething() {
System.out.println("adasd");
}
Конвертер:
@FacesConverter(forClass=Pacijenti.class)
public class PacijentiConverter implements Converter {
@Override
public Object getAsObject(FacesContext fc, UIComponent uic, String value) {
if(value != null && value.trim().length() > 0) {
try {
if (value == null || value.isEmpty()) {
return null;
}
try {
Pacijenti pac = new Pacijenti();
for(Pacijenti p : CommonServices.fetchPacijentiFromDB()) {
if(value == p.getPacijent_id()) {
pac = p;
}
}
return pac;
} catch (Exception e) {
throw new ConverterException(new FacesMessage(value + " is not a valid Warehouse ID"), e);
}
} catch(NumberFormatException e) {
throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Not a valid theme."));
}
}
else {
return null;
}
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (value == null) {
return "";
}
if (value instanceof Pacijenti) {
return String.valueOf(((Pacijenti) value).getPacijent_id());
} else {
throw new ConverterException(new FacesMessage(value + " is not a valid Warehouse"));
}
}
}
В этом примере я просто пытаюсь что-то написать в консоли, когда нажимаю на элемент в selectOneMenu.
Примечание: я только разместил код, который имеет отношение к этомупроблема.