自动完成属性呈现不起作用的表面

时间:2016-05-24 05:32:40

标签: java primefaces autocomplete

我在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;

}

当我没有使用自动完成的渲染属性时,一切正常。我在几个项目中使用了这种代码,并且正在使用呈现的属性。我希望有人可以帮助我找到我的错误。 感谢

0 个答案:

没有答案