p:commandButton nicht Feuer-Aktion
Hier ist das problem: actionlistener will nicht gefeuert werden
@ManagedBean(name="hotelsController")
@SessionScoped
public class HotelsController implements Serializable {
public void requestHotelAvail(ActionEvent event) {
request = new Request(df.format(arrivalDate), df.format(departureDate));
}
}
- und xhtml -
<h:panelgroup id="rooms"/>
<h:form id="hotelSearch">
<p:commandButton actionListener="#{hotelsController.requestHotelAvail}" value="submit" update="rooms" />
</h:form>
Ich habe alles versucht, was ich konnte, Suche nach geändert @managedbean
zu @component
set import
zu import javax.faces.event.ActionEvent;
Aber noch nicht Feuer nichts.
Form ist in einem p:accordion
und, wenn verwendet, mit h:commandbutton
es funktioniert
BEARBEITEN: sorry für die Irreführung. Zimmer die updates nach dem Klick, aber der actionListener wird nicht ausgelöst. also Zimmer erhalten keine neuen Daten. Wichtig-code in requestHotelAvail
muss ausgelöst werden, bevor die Aktualisierung der Zimmer-und nicht seiner.
EDIT2: PrimeFaces 2.2.1
- ich habe gelesen, ganze Handbuch zu primefaces, aber es gibt keine Erklärung dafür habe ich alles getan, dass es Staaten
Ich habe versucht, mit action
statt actionListener
ohne ActionEvent
aber nie etwas tun. mit <h:commandbutton action="#{hotelscontroller.requestHotelAvail}"/>
funktioniert Super, aber ich will, dass die ajax-engine zu aktualisieren, nur, dass rooms
panelgroup
UPDATE: Jetzt funktioniert es. Formular konnte nicht in <p:accordion>
aber warum und wie, um es zu aktivieren gibt? Nun ich werde ohne arbeiten.
rooms
panelgroup wird nicht aktualisiert?Nicht Ihr problem beheben, ist aber eine gute Praxis zu haben, die form-Komponente höher als alle anderen Komponenten, solange Sie nicht stören anderen Formen (vermeiden Sie auch innere Formen)
Auch stellen einige
sysout's
in dieser Methode, um sicher zu sein, oder erstellen Sie eine weitere Methode in dieser Klasse... im server-log erscheint nicht etwas? Wie konnte Sie nicht finden, die Bohne oder die Aktion/Eigenschaft nicht gefunden? Wenn Sie Netbeans sicher sein, dass Ihre Klasse ist richtig eingebaut...Was PrimeFaces version? Versuchen
action
statt actionListener
und zu entfernen, dass ActionEvent
argument, das Sie nicht mit eh.InformationsquelleAutor Mazmart | 2011-11-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich vermute, dass das unterschiedliche Verhalten von h:commandLink kommt von ajax und nicht-ajax-Verarbeitung.
Standardmäßig - wenn Sie nicht die Nutzung von f:ajax - h:commandLink ist nicht ajax und die ganze Seite gerendert. Primefaces p:commandLink ist mit ajax, und Sie zeigen Zimmer, wie Komponente aktualisiert werden. In Ihrem Fall Zimmer ist außerhalb der form, es sollte also eher angesprochen werden als :Zimmer (man beachte den Doppelpunkt) statt nur Zimmer.
update: Sie haben versucht, die ajax mit h:commandLink? Es wäre:
Außerdem bin ich nicht so vertraut mit primefaces aber vielleicht können Sie versuchen, geben Sie explizit an, die Komponente für die Verarbeitung mit zusätzlichen
process="@this"
- obwohl ich annehmen würde, diese werden standardmäßig als in der basic-Bibliothek.update
aber dieactionListener
. update Funktioniert einwandfreiIch sehe, aktualisiert sich meine Antwort mit der Erforschung einer Möglichkeit.
gut
<h:commandButton action="#{hotelscontroller.requestHotelAvail}" value="submit"> <f:ajax render=":rooms"/> </h:commandButton>
es verhält sich nun wie<p:commandButton>
so panelgroup ist aktualisiert, aber die Aktion wird nicht ausgelöst. es werden größere problem zu managedBean oder ganze xhtmlKönnen Sie versuchen, außerhalb p:Akkordeon? Es klingt wie ein Durchlaufen Komponente, und diese sind in der Regel problematisch.
Vielen Dank, das funktioniert wie ein Charme, aber jetzt muss ich herausfinden, warum und wie es zu benutzen
<p:accordion.
.InformationsquelleAutor mrembisz
Sie versuchen, prüfen der Antwort:
Öffnen Chrome oder Firefox -> Element Untersuchen -> Netzwerk und Folgen Sie den ajax-call.
InformationsquelleAutor Pablo