【发布时间】:2018-05-30 08:43:20
【问题描述】:
我已经处理这个问题已经有一段时间了。当我在 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(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 中的项目时,我只是想在控制台中写一些东西。
注意:我只发布了与此问题相关的代码。
【问题讨论】:
-
尝试将视图包裹在
-
整个正文在
-
@Ovoxo 还有,连陈列柜都不能用是不是很好奇?
-
展示“不起作用”,但如果您调试,您将在网络选项卡中看到返回的响应,其中包含正确的城市。所以只有ui部分没有更新。你的 PF 版本是多少?
-
6.2,我尝试切换到旧版本,它仍然是一样的。
标签: ajax primefaces dropdown selectonemenu