我在Primefaces 5.3
中发现了一个大问题
我已经好几次了,但现在它已经不能用了。
在我的项目中,我有一些自动完成标签。它们正常工作,但是当我将渲染选项设置为false并想要显示它们时是否有一些选项。他们不工作。并且他们没有调用结果列表的查询函数。
我无法发布洞源代码,因为它们有超过2500行代码。
XHTML - 文件:
<p:dialog widgetVar="createTourdatDlg" id="createTourdatDlg" dynamic="true" header="Tourdat erstellen" width="450">
<h:panelGrid id="createTourdatPanel" columns="2">
<p:outputLabel value="Kurzbezeichnung:"/>
<p:inputText value="#{tourdatenBean.kurzbezeichnung}"/>
<p:outputLabel value="Tabellen Referenz:"/>
<p:selectOneButton value="#{tourdatenBean.tabellenReferenz}">
<p:ajax listener="#{tourdatenBean.test()}" update="@([id$=createTourdatPanel])"/>
<f:selectItem itemLabel="Tourdat Krieger" itemValue="KR" >
</f:selectItem>
<f:selectItem itemLabel="Tourdat Karg" itemValue="KG"/>
</p:selectOneButton>
<p:outputLabel value="Tourdat :"/>
<p:autoComplete active="#{tourdatenBean.showTourdatvdd}" rendered="#{tourdatenBean.showTourdatvdd}" id="ddtourdatv1" dropdown="true" forceSelection="true" converter="tourdatvConverter" value="#{tourdatenBean.tourdat}"
completeMethod="#{tourdatenBean.tourdatenMB.listZuweisbareTourdat}" var="Tourdatv" itemValue="#{Tourdatv}" itemLabel="#{Tourdatv.trbeze.trim()}" >
</p:autoComplete>
查询列表的托管Bean:
@ManagedBean
@ApplicationScoped
public class TourdatenMB {
@EJB UmladungenManager umladungenManager;
@EJB DepotManager depotManager;
@EJB SubunternehmenManager subunternehmenManager;
@EJB TafRefPManager tafRefPManager;
@EJB TourdatenManager tourdatenManager;
@EJB TourdatvManager tourdatvManager;
@EJB FahrzeugeManager fahrzeugeManager;
@EJB TourdatkrManager tourdatkrManager;
private List<Tourdaten> listTourdaten = null;
private List<Tourdatv> listTourdatv = null,
listZuweisbareTourdat = null;
private List<Tourdatkr> listTourdatenkr = null;
private List<Fahrzeuge> listFahrzeuge = null;
private List<Subunternehmen> listSubunternehmen = null;
private List<Depot> listDepot = null;
private List<Umladung> listUmladung = null;
private List<Tafrefp> listTourart = null,
listRegion = null,
listTourklasse = null,
listLieferklasse = null,
listFahrzeugklasse = null;
private Fahrzeuge selectedFahrzeug = null;
private Depot startDepot = null,
zielDepot = null;
@PostConstruct
public void init(){
updateListen();
}
public void updateListen(){
listTourdaten = tourdatenManager.getAll();
listTourdatv = tourdatvManager.getAll();
listFahrzeuge = fahrzeugeManager.getAll();
listSubunternehmen = subunternehmenManager.getAll();
listDepot = depotManager.getAll();
listUmladung = umladungenManager.getAll();
listTourart = tafRefPManager.getAllTourarten();
listRegion = tafRefPManager.getAllRegionen();
listTourklasse = tafRefPManager.getAllTourklassen();
listLieferklasse = tafRefPManager.getAllLieferklassen();
listFahrzeugklasse = tafRefPManager.getAllFahrzeugklassen();
listZuweisbareTourdat = updateZuweisbareTourdatv();
listTourdatenkr = tourdatkrManager.getAll();
}
public List<Tourdatv> updateZuweisbareTourdatv(){
List<Tourdatv> tempListTourdatv = tourdatvManager.getAll();
if(listTourdaten != null){
for(Tourdaten t : listTourdaten){
Tourdatv temptv = null;
for(Tourdatv tv : tempListTourdatv)
if(t.getTourdatv().getTrnumm().equals(tv.getTrnumm()) ){
temptv = tv;
}
if(temptv != null)
tempListTourdatv.remove(temptv);
}
return tempListTourdatv;
}
else
return tempListTourdatv;
}
public List<Tourdatv> listZuweisbareTourdat(String query){
System.out.println("Testing DD");
if( query.equals("")){
return listZuweisbareTourdat;
}
else{
List<Tourdatv> tempList = new ArrayList<Tourdatv>();
for(Tourdatv tv : listZuweisbareTourdat){
if(tv.getTrbeze().trim().toUpperCase().startsWith(query.toUpperCase()))
tempList.add(tv);
}
return tempList;
}
}
// ----- Setter / Getter -----
.....
Managed Bean用于将呈现设置为true和false
@ManagedBean
@ApplicationScoped
public class TourdatenBean {
@EJB TourdatenManager tourdatenManager;
@ManagedProperty(value="#{tourdatenMB}")
private managedBeans.TourdatenMB tourdatenMB;
private String kurzbezeichnung;
private int anzahlStopps;
private float kmBisDepot,
kmGesammt,
kmLetzterKunde;
private Time startZeit,
endZeit;
private Depot startDepot,
zielDepot;
private Fahrzeuge fahrzeug;
private Tafrefp tourKlasse,
lieferKlasse,
region,
tourArt;
private List<Umladung> umladungen;
private Tourdatv tourdat;
private Integer tourdatkrId;
private String tabellenReferenz; // Auswahl für die Referenzierung auf Tourdatv oder TourdatKR
private Boolean showTourdatvdd = false;
public void test(){
System.out.println("Test");
System.out.println("tabellenReferenz:" + tabellenReferenz);
if(tabellenReferenz.equals("KG"))
showTourdatvdd = true;
else
showTourdatvdd = false;
System.out.println(getTourdatenMB().listZuweisbareTourdat("").size());
}
public void create(){
Tourdaten t = new Tourdaten();
t.setAnzahlStopps(anzahlStopps);
t.setEndzeit(endZeit);
t.setFahrzeug(fahrzeug);
t.setKmBisdepot(kmBisDepot);
t.setKmGesammt(kmGesammt);
t.setKmLetzterkunde(kmLetzterKunde);
t.setKurzbezeichnung(kurzbezeichnung);
t.setLieferKlasse(lieferKlasse);
t.setRegion(region);
t.setStartDepot(startDepot);
t.setStartzeit(startZeit);
t.setTourArt(tourArt);
t.setTourdatv(tourdat);
t.setTourKlasse(tourKlasse);
t.setZielDepot(zielDepot);
tourdatenManager.create(t);
t.setTourdatkrId(tourdatkrId);
clear();
getTourdatenMB().updateListen();
RequestContext context = RequestContext.getCurrentInstance();
context.addCallbackParam("window", "createTourdatDlg");
}
public void delete(int id){
Tourdaten t = tourdatenManager.find(id);
tourdatenManager.remove(t);
clear();
getTourdatenMB().updateListen();
}
public void clear(){
kurzbezeichnung = null;
anzahlStopps= 0;
kmBisDepot= 0.0F;
kmGesammt= 0.0F;
kmLetzterKunde= 0.0F;
startZeit= null;
endZeit= null;
startDepot= null;
zielDepot= null;
fahrzeug= null;
tourKlasse= null;
lieferKlasse= null;
region= null;
tourArt= null;
umladungen= null;
tourdat= null;
tourdatkrId = null;
tabellenReferenz = null;
}
当我没有使用自动完成的渲染属性时,一切正常。我在几个项目中使用了这种代码,并且正在使用呈现的属性。我希望有人可以帮助我找到我的错误。 感谢