primefaces autocomplete, wenn geräumte Feld geben vorherigen Ergebnisse Seite beim klicken auf submit-button
Bin ich mit einer autocomplete-tag der prime Gesichter, das ruft Ergebnisse aus einer Datenbank.
Das problem ist, dass wenn ich das Formular abschicken verlassen der AutoVervollständigen-Feld leer, werden die Ergebnisse bekomme ich auf der Seite, sind diejenigen, die der vorherigen Anforderung (die zuvor ausgewählten AutoVervollständigen-Wert) - es wird nur gelöscht wenn ich die Seite aktualisieren.
Möchte ich, dass auf jeder Einreichen, ohne eine Aktualisierung der Seite im browser, wenn ich klar den Wert in das Feld mit backspaces und senden Sie das Formular sollte es geben, das richtige Ergebnis für diese spezielle Instanz, nicht Vorherige.
Ich bin auch mit einigen Textfeldern in der jsf-Seite das Formular aber diese haben dieses problem nicht.
Kann mir jemand Hinweise, wie dieses problem behoben werden können?
BEARBEITET:
Code:
<h:form>
<h:dataTable id="Ressult" value="#{input.searchResults}" var="r">
<h:column>#{r.ID}</h:column>
<h:column>#{r.Name}</h:column>
</h:dataTable>
<tr>
<td>Current Education Level</td>
<td>
<h:panelGrid styleClass="text-box">
<p:autoComplete id="education" value="#{input.education}"
completeMethod="#{input.getautocomplete}" var="a"
itemLabel="#{a.Name}" itemValue="#{a}"
converter="edConverter" forceSelection="true" />
<p:column>#{a.Name} - #{a.id}</p:column>
</h:panelGrid>
</td>
</tr>
<tr>
<td>City</td>
<td>
<h:selectOneMenu id="txtCity" styleClass="select-field"
value="#{input.cityId}">
<f:selectItem itemLabel=" Please Select" itemValue="0">
</f:selectItem>
<f:selectItems value="#{input.cities}"></f:selectItems>
</h:selectOneMenu>
</td>
</tr>
<tr>
<td>Name of Person</td>
<td>
<h:inputText id="txtName" value="#{input.nameOfPerson}"
styleClass="text-box"></h:inputText>
</td>
</tr>
<h:commandButton id="btnSearch" value="Search"
action="#{input.searching}">
<f:ajax execute="@form" render="Ressult"></f:ajax>
</h:commandButton>
</h:form>
Und hier ist die bean-code:
public class Input
{
private Education education;
private List<SelectItem> cities;
private Integer cityId;
private String nameOfPerson;
private List<Results> searchResults;
//getters and setters
public String searching()
{
searchResults=dao.getSearchResults(cityId,education,nameOfPerson);
return "success";
}
public void autocomplete(String query)
{
//AUTOCOMPLTE lIST CODE HERE
}
}
Durch das update, wenn du meinst, die neuen Ergebnisse angezeigt werden soll, wenn neue Elemente ausgewählt, dann ja - das Formular soll aktualisiert werden, aber AutoVervollständigen irgendwie nimmt die vorher ausgewählten Wert und zeigt die Ergebnisse entsprechend. Zumindest bis ich die Seite aktualisieren - nur dann ist Auto-vervollständigen die bisherigen entfernt ist.
- aktualisieren Sie das Formular ?? und poste bitte code, um weitere Hilfe..
- plz überprüfen Sie die bearbeitete Frage
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem mit meinem autocomplete-widget.
Wenn ich entfernt und dessen id-Attribut es funktionierte. Vielleicht ein bug in Primefaces.
Haben Sie zwei Dinge zu tun:
Verhindert, dass der Benutzer die Eingabe durch drücken der Enter-Taste, indem Sie die folgenden in Ihrer form:
Mit itemSelect/itemUnselect Funktionen zur Verfügung gestellt, um leere das Feld in der Bean:
In der Bohne:
Gut, wenn ich verstehe deine Frage richtig Ihre Liste der auto-Vervollständigung angezeigt wird, nachdem die post. Und Sie nutzen Ihre form zu übermitteln und jederzeit auf die gleiche Seite.
Deine Bohne sieht ein wenig seltsam aus. Da hast du den Aufruf in die Seite der AutoVervollständigen-Methode: getautocomplete aber, dass man nicht existiert bean.
Verwenden Sie die AutoVervollständigen in dieser Weise:
- Und in deiner bean:
fixiert auf 5.2, aktualisieren Sie Ihre primefaces jar
hier die log-Ausgabe
https://code.google.com/p/primefaces/issues/detail?id=7592
Fix die Thema-Frage Sie einfach entfernen Sie die forceselection
machen oder es als falsch.
Nur Prozess-Ereignis-server. Funktioniert mit forceselection="true"